Eu entendo que sed
é um comando para manipular arquivos de texto.
No meu Google, parece que -i
significa executar a operação no próprio arquivo, isso está correto?
Que tal '1d'
?
Eu entendo que sed
é um comando para manipular arquivos de texto.
No meu Google, parece que -i
significa executar a operação no próprio arquivo, isso está correto?
Que tal '1d'
?
Respostas:
Em sed
:
-i
A opção editará o arquivo de entrada no local
'1d'
irá remover a primeira linha do arquivo de entrada
Exemplo:
% cat file.txt
foo
bar
% sed -i '1d' file.txt
% cat file.txt
bar
Observe que, na maioria das vezes, é uma boa idéia fazer um backup enquanto usa a -i
opção para que você faça backup do arquivo original em caso de alteração inesperada.
Por exemplo, se você fizer:
sed -i.orig '1d' file.txt
o arquivo original será mantido como file.txt.orig
e o arquivo modificado file.txt
.
sed '1d' file.txt
Imprime o conteúdo de file.txt
; excluindo a primeira linha; para a saída padrão.
sed -i '1d' file.txt # GNU, NetBSD, OpenBSD
sed -i '' '1d' file.txt # FreeBSD, macOS
Imprime o conteúdo de file.txt
; excluindo a primeira linha; de volta para file.txt
; substituindo o original.
sed -i.back '1d' file.txt
Cria um backup do original (as file.txt.back
), antes de fazer alterações. Exceto no FreeBSD sed
, o sufixo (aqui .back
) deve ser anexado à -i
opção (no mesmo argumento, sem espaço entre -i
e .back
).
sed '2d' file.txt
Imprime o conteúdo de file.txt
; excluindo a segunda linha; para a saída padrão.
(Especificar qualquer número removerá a linha correspondente).
Também compatível com a -i
bandeira.
sed '1!d' file.txt
Imprime o conteúdo de file.txt
; excluindo tudo, exceto a primeira linha; para a saída padrão.
(Em outras palavras, somente a primeira linha é impressa).
Também compatível com a -i
bandeira.
sed '$d' file.txt
Imprime o conteúdo de file.txt
; excluindo a última linha; para a saída padrão.
Também compatível com a -i
bandeira.
Em sed -h
ter:
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
e 'execute a operação no próprio arquivo'. é absoluto.
E man
disse: 'Sed é um editor de stream. Um editor de fluxo é usado para executar transformações básicas de texto em um fluxo de entrada (um arquivo ou entrada de um pipeline). '
como sua pergunta,
sed -i '1d' file_name
significa: excluir a primeira linha do arquivo "file_name"
no local e fazer backup no arquivo. (assim como editar arquivo e excluir a primeira linha diretamente.)
-i
ver o que acontece primeiro e depois usar-i
para alterar o arquivo.