Interpretação de ~ em sed

6

Eu estou aprendendo sed hoje em dia. Há esse til '~' que me confunde mais do que tudo.

Por exemplo, o comando

sed -n '1~2 w output.txt' input.txt

está imprimindo as linhas ímpares numeradas (para arquivar output.txt).

No mesmo tutorial, também é dado que ele pula linhas de 1 a 2 e, em seguida, começa a imprimir as linhas ao lado da linha número 2 no caso de usarmos

sed -n '1~2 p' input.txt

Qual é a interpretação absoluta deste til?

    
por Upendra Pratap Singh 02.08.2016 / 10:28

1 resposta

11

Esta é uma extensão do GNU sed :

first~step

Match every step'th line starting with line first. For example, sed -n 1~2p will print all the odd-numbered lines in the input stream, and the address 2~5 will match every fifth line, starting with the second. first can be zero; in this case, sed operates as if it were equal to step. (This is an extension.)

Seus dois exemplos correspondem às mesmas linhas, mas o primeiro grava ( w ) eles em um arquivo, enquanto o segundo imprime ( p ) eles para onde quer que a saída padrão esteja indo.

Em geral, sempre consulte o manual do comando. O manual raramente é ambíguo. A aplicação de um comando através da combinação de vários aspectos de sua funcionalidade pode ser difícil de explicar em um tutorial algumas vezes (e algumas vezes um tutorial tenta tornar as coisas mais fáceis de entender reescrevendo a mesma declaração de várias maneiras, o que pode causar confusão), mas o manual é a referência definida para cada bit do que o comando agregado faz.

    
por 02.08.2016 / 10:40

Tags