Não use sed -i
- ele substituiria seu arquivo original.
Use o grep no lugar.
grep "text to find" input.txt > output.txt
Existe algum comando no Linux para encontrar texto em um arquivo e, se encontrado, copiá-lo em outro arquivo?
Usando sed -i
, podemos encontrar texto, mas como copiar toda a linha em outro arquivo?
Não use sed -i
- ele substituiria seu arquivo original.
Use o grep no lugar.
grep "text to find" input.txt > output.txt
sed
envia para stdout
por padrão. Para gerar saída para um arquivo, redirecione sed
' stdout
para um arquivo usando o operador >
(se desejar criar um novo arquivo) ou usando o operador >>
(se desejar anexar a saída a um arquivo já existente):
sed '/text/' inputfile > outputfile
sed '/text/' inputfile >> outputfile
Você pode usar o grep. Vamos dizer que você quer pesquisar no arquivo source_file, eo segundo arquivo onde você tem as linhas que você deseja pesquisar é input_file. Use
grep -f input_file source_file > output_file
Digamos que o seu source_file seja
Humpty Dumpty sat on a wall
Humpty Dumpty had a great fall
All the King's horses and
All the Queen's men
COuld not put Humpty together again
E o arquivo de entrada é
Humpty
Queen
A sua saída seria
Humpty Dumpty sat on a wall
Humpty Dumpty had a great fall
All the Queen's men
COuld not put Humpty together again
sed -i
é para edição no local:
de man sed
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
sed
é uma boa escolha, mas você também pode usar awk
awk '/<your_pattern>/' foo > bar
Exemplo
$ cat foo
foo bar foobar
bar foo bar
bar foo
$ awk '/foobar/' foo > bar
$ cat bar
foo bar foobar
Tags grep search files text-processing