No momento estou usando echo "Hello World" >> file.txt
para anexar algum texto a um arquivo, mas também preciso adicionar texto abaixo de uma determinada string, digamos "[opção]", é possível sed
?
POR EXEMPLO:
Arquivo de entrada
Some text
Random
[option]
Some stuff
Arquivo de saída
Some text
Random
[option]
*inserted text*
Some stuff
text-processing
sed
replace
Javier Villanueva
fonte
fonte
input
asoutput
linhas e. Porque você Q não está claro. Você também pode fazerecho "Hello World [option]" >> file.txt
, mas não faz sentido.Respostas:
Anexar linha após partida
sed '/\[option\]/a Hello World' input
Inserir linha antes da partida
sed '/\[option\]/i Hello World' input
Além disso, você pode fazer backup e editar o arquivo de entrada no local usando a
-i.bkp
opção sedfonte
sed: 1: "/pattern/a some text here": command a expects \ followed by text
\ <<NEWLINE>>
após aa
opção0,
os comandos:sed '0,/\[option\]/a Hello World' input
oused '0,/\[option\]/i Hello World' input
Sim, é possível com
sed
:Um exemplo:
fonte
foo bar option bar option baz
. Então o padrão se tornoufoo bar option bar option addedstring baz
?Com
awk
:Lembre-se de que alguns caracteres não podem ser incluídos literalmente; portanto, é necessário usar seqüências de escape (elas começam com uma barra invertida), por exemplo, para imprimir uma barra invertida literal que é preciso escrever
\\
.Na verdade, é o mesmo com,
sed
mas além disso, cada nova linha incorporada no texto deve ser precedida por uma barra invertida:Para mais detalhes sobre seqüências de escape, consulte o manual.
fonte