Simplesmente:
sed 'n;d' file
para linhas pares e
sed '1!n;d' file
para linhas ímpares.
Com a implementação GNU de sed
, você também pode usar esta sintaxe:
Estranho:
sed '1~2d' file
Mesmo:
sed '2~2d' file
Tudo o que preciso é o código sed
ou awk
para remover as linhas pares num arquivo de texto. Nada extravagante Só preciso remover dados irrelevantes nas linhas pares de um arquivo de texto.
Simplesmente:
sed 'n;d' file
para linhas pares e
sed '1!n;d' file
para linhas ímpares.
Com a implementação GNU de sed
, você também pode usar esta sintaxe:
Estranho:
sed '1~2d' file
Mesmo:
sed '2~2d' file
Você pode remover as linhas mencionadas de texto indesejável por assim
sed -i '/[REGEX]/d' <FILE>
Em que [REGEX]
é uma expressão regular que corresponde à linha indesejada de texto e <FILE>
é o nome do arquivo do qual você deseja remover o texto. Você pode aninhar os comandos delete ( //d
) da seguinte forma:
sed '/[REGEX]/d ; /[REGEX]/d ; /[REGEX]/d'
Veja um exemplo:
echo "a" > file ; echo "abcd" >> file
sed -i '/^a$/d' file
cat file # => abcd
Se a sua versão de sed
não for compatível com a opção -i
, você poderá usar o seguinte para o mesmo efeito.
cat file | sed '/[REGEX]/d' > file_2 && cat file_2 > file && rm file_2
Redirecionar a saída de cat file
de volta para file
não terá o efeito desejado. De fato, truncará file
completamente, isto é, apagará completamente file
.
Então, não faça isso:
cat file | sed '/[REGEX]/d' > file
Veja a solução awk :
Para excluir linhas ímpares:
awk 'NR%2==0{ print $0 > "infile" }' infile
Para excluir linhas pares:
awk 'NR%2{ print $0 > "infile" }' infile
Observe que os comandos acima excluem as linhas relacionadas in-place do arquivo infile
input, portanto, tome cuidado para gravar a saída no mesmo arquivo de entrada.
Você pode gravá-los em outro arquivo separado, como segue:
Isso criará o arquivo EvenLines
contendo um número par de linhas:
awk 'NR%2==0{ print $0 > "EvenLines" }' infile
E este criará o arquivo OddLines
contendo números ímpares de linhas:
awk 'NR%2{ print $0 > "OddLines" }' infile
sed '0~2d' file
Este comando é usado para excluir as linhas pares nos arquivos.
Tags text-processing awk sed