Use apenas sed p
.
echo foobar | sed p
Você não precisa de cat
:
sed p input.txt
# or
sed p input.txt > output.txt
Explicação
p
é o comando sed
para "imprimir".
Imprimir também é a ação padrão do sed
. Então quando você diz sed
explicitamente para imprimir, o resultado é que ele imprime todas as linhas duas vezes .
Digamos que você queira imprimir apenas linhas que incluam a palavra "kumquat". Você pode usar -n
para suprimir a ação padrão de impressão de sed
e, em seguida, informar explicitamente para imprimir linhas que correspondam a /kumquat/
:
sed -n /kumquat/p
Ou se você quiser apenas imprimir a quinta linha e nada mais:
sed -n 5p
Ou, se você quiser imprimir todas as linhas da 15ª linha até a 27ª linha:
sed -n 15,17p
Se quiser imprimir todas as linhas exceto que contenham "kumquat", você poderá fazer isso excluindo todas as linhas do kumquat e permitindo que a ação padrão sed
de imprimir a linha ocorrer em linhas não excluídas. Você não precisaria do sinalizador -n
nem do comando explícito p
:
sed /kumquat/d
sed
funciona em um padrão simples - sintaxe de ação. Nos exemplos acima, mostrei padrões baseados em números de linha e padrões baseados em regex, e apenas duas ações (imprimir e excluir). sed
tem um lote mais poder do que isso.
Eu realmente deveria incluir o comando sed
mais comum e útil que existe:
sed s/apples/oranges/g
Isso substitui todas as ocorrências de "apples" por "laranjas" e imprime o resultado.
(Se você omitir o sinalizador g
lobal ao comando s
ubstitute, apenas a primeira instância em cada linha será alterada.)
Leitura adicional (altamente recomendado):