removendo linhas por sed

2

Eu tenho texto dentro de algumas linhas que estão dentro abaixo, e para extrair algumas linhas usando esse comando;

cat meyveler.txt

elma armut ve ayva daha cok kış meyveleridir
ancak,
yaz mevyeleride oldukca lezzetli oldugu gözden kacmamalıdır.
ayrıca tüm bunlara istinaden tüm calısmalat gözden gecirilebilir olmalıdır.
12.ayın gelmesiyle beraber ayva ve Nar sezonu hareketlenmeye,
Bus senenin bitisiylede Hamsiler hareketlenmeye baslayacaktır.
=tabi bu işlemler bu sekilde akıp gider

E para extrair algumas linhas usando esse comando;

cat meyveler.txt | egrep "^[^a-z].*$"

12.ayın gelmesiyle beraber ayva ve Nar sezonu hareketlenmeye,
Bus senenin bitisiylede Hamsiler hareketlenmeye baslayacaktır.
=tabi bu işlemler bu sekilde akıp gider

Agora eu tento excluir esta linha por isso, mas estou recebendo erro, o que devo usar para isso?

cat meyveler.txt | egrep "^[^a-z].*$" | xargs -Iline sed -i "/line/d"
    
por solfish 09.08.2017 / 21:06

2 respostas

2

Minha solução é:

grep '^[a-z]' meyveler.txt

Que retorna apenas as linhas correspondentes ao padrão desejado, não é necessário usar cat , egrep , xargs ou sed .

Explicação do erro:

Você não tem nenhum arquivo para processar usando sed , portanto não é possível usar -i .

  • -i edita os arquivos em seu lugar

Na verdade, você está canalizando o conteúdo do arquivo meyveler.txt como um fluxo para o comando sed e sed irá editá-lo no stdout.

  • Observe que o comando cat é desnecessário, xargs também.

No entanto, como a steeldriver mencionou isso, você está procurando:

egrep "^[^a-z].*$" meyveler.txt | xargs -Iline sed -i "/line/d" meyveler.txt
    
por Ravexina 09.08.2017 / 21:10
3

Dado um arquivo meyveler.txt , você pode excluir todas as linhas que iniciam não com uma letra minúscula a-z com sed simplesmente assim:

sed '/^[^a-z]/d' meyveler.txt

O comando acima lerá seu arquivo e imprimirá a saída filtrada no terminal. Se você quiser editar o arquivo diretamente no local, adicione o sinalizador -i . Você pode preservar o arquivo original como backup se você especificar um sufixo (por exemplo, -i.bak manterá os dados originais como meyveler.txt.bak ):

sed -i '/^[^a-z]/d' meyveler.txt

Você não precisa de cat para ler o arquivo e não precisa de grep ou egrep para filtrá-los. Toda essa funcionalidade está incorporada em sed .

    
por Byte Commander 09.08.2017 / 21:16