br comando para apagar tudo e deixar apenas palavras entre padrões? [duplicado]

0

sed comando para apagar tudo e deixar apenas palavras entre padrão?

Eu tentei:

$ sudo sed -i '/from/,/until/!d'

Mas deixou algumas palavras na primeira linha e deixou linhas inteiras não apenas palavras entre padrões.

Eu tenho um arquivo cheio de texto, mas só quero deixar o texto entre "de" texto "até" e excluir todo o resto.

Eu tento

for file in 'ls'
do
    echo "'awk '/from/,/until/' $file'" > $file
done

e eu deixei duas linhas, um é o texto do padrão acima, uma está vazia, nova linha

    
por unknown 04.09.2018 / 01:28

1 resposta

0

Parece que você quer imprimir tudo entre dois padrões, mas exclui todo o resto. Algo parecido com isto:

$ echo -e "a\nb\nc\nd\ne" | sed -ne '/b/,/d/p'
b
c
d

Onde /b/ e /d/ são seus padrões inicial e final. Uma abordagem semelhante pode ser realizada usando awk também:

$ echo -e "a\nb\nc\nd\ne" | awk '/b/,/d/'
b
c
d

Padrões

Ao decidir o que usar como padrões de início / término, é necessário que você os desenhe para que sejam tão explícitos quanto possível.

Por exemplo:

$ cat afile
something
something
one
two
some start
start
what
did
you start
done
end
the end

Agora, selecione as linhas que ocorrem entre as linhas que contêm apenas a palavra /start/ seguido por /done/ :

$ sed -ne '/^start$/,/^done$/p' afile
start
what
did
you start
done

Referências

por 04.09.2018 / 01:42

Tags