O que sed -i '1d' faz?

24

Eu entendo que sed é um comando para manipular o arquivo de texto.

Do meu google, parece -i significa executar a operação no próprio arquivo, está correto?

Que tal '1d' ?

    
por Jérôme Verstrynge 20.01.2016 / 11:13

3 respostas

37

Em sed :

    A opção
  • -i editará o arquivo de entrada no local

  • '1d' removerá a primeira linha do arquivo de entrada

Exemplo:

% cat file.txt 
foo
bar

% sed -i '1d' file.txt 

% cat file.txt        
bar

Note que, na maioria das vezes, é uma boa ideia fazer um backup usando a opção -i para que você tenha o backup do arquivo original caso algo saia errado no processo.

Por exemplo, se você fizer isso:

sed -i.orig '1d' file.txt 

o arquivo original será mantido como file.txt.orig e o arquivo modificado será file.txt .

    
por 20.01.2016 / 11:16
11

1. a)

sed '1d' file.txt

Imprime o conteúdo de file.txt ; excluindo a primeira linha; para a saída padrão.

2. a)

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 ; sobrescrevendo o original.

2. b)

sed -i.back '1d' file.txt

Cria um backup do original (como file.txt.back ), antes de fazer alterações. Exceto com FreeBSD sed , o sufixo (aqui .back ) deve ser anexado à opção -i (no mesmo argumento, sem espaço entre -i e .back ).

3. a)

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 irá remover a linha correspondente).

Também é compatível com o sinalizador -i .

3. b)

sed '1!d' file.txt

Imprime o conteúdo de file.txt ; excluindo todos mas a primeira linha; para a saída padrão.
(Em outras palavras, somente a primeira linha é impressa).

Também é compatível com o sinalizador -i .

3. c)

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 o sinalizador -i .

    
por 20.01.2016 / 20:09
2

Em sed -h tem:

  -i[SUFFIX], --in-place[=SUFFIX]
             edit files in place (makes backup if SUFFIX supplied)

e 'executar a operação no próprio arquivo.' absoluto é.

E man disse: 'Sed é um editor de fluxo. Um editor de fluxo é usado para executar texto básico        transformações 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 no arquivo "file_name" no local e o backup no arquivo. (como editar o arquivo e excluir a primeira linha diretamente).

    
por 20.01.2016 / 11:31

Tags