ed imprimir as próximas n linhas da forma mais sucinta possível

4

Estou tentando entender o ed DSL um pouco melhor porque versões dele aparecem em outras ferramentas (por exemplo, sed , vim ).

Usando ed , é possível imprimir as próximas 4 linhas usando .,+4n , em que .,+4 é um intervalo explícito começando na linha atual e estendendo 4 linhas para baixo.

No entanto, imprimir várias linhas em torno do atual para o contexto parece importante o suficiente para merecer algum açúcar sintático.

Existe uma abreviação dos intervalos de linha relativos à linha atual em ed já?

por exemplo. na transcrição abaixo de .,+4n parece bastante longo.

$ touch ~/foo
$ ed '-p* ' ~/foo
0
* 0a
1
2
3
4
5
6
7
8
9
10
11
.
* 5
5
* .,+4n
5   5
6   6
7   7
8   8
9   9
    
por Gregory Nisbet 10.11.2018 / 20:23

1 resposta

3

-4,+4n imprimiria as quatro linhas anteriores, a atual e as quatro linhas seguintes (numeradas).

Outra maneira de escrever a mesma coisa, que é um pouco menor, é -4z8n . Isso aplicaria o comando z , que é diferente de p em que ele primeiro move para a linha endereçada (aqui -4 ) e, em seguida, mostra essa linha e (aqui) 8 mais linhas. O n torna as linhas numeradas. A diferença real é que se você der o comando zn novamente (sem números agora), ele mostrará as próximas oito linhas (ou qualquer número digitado após o comando inicial z ).

Ambos os comandos alteram o que é considerado a "linha atual", e você teria que voltar manualmente com -4 , ou definir uma marca antes de se mover (por exemplo, ka ) e voltar para essa marca (por exemplo %código%). O editor 'a não aceita vários comandos para serem dados de uma só vez, infelizmente ...

Observe que o comando ed não é um comando padrão z , mas suportado pelo GNU ed e ed nos sistemas BSD.

Com ed , o comando ex mostraria cinco linhas do buffer atual com a linha atual no meio. Aqui também, você moveria o cursor até a última linha exibida.

    
por 10.11.2018 / 23:13

Tags