Usando o comando sed altere uma string em uma certa linha com uma certa string

0

Eu preciso usar o sed para alterar uma string em um arquivo somente na quarta linha, se ela contiver uma string chamada "test"

Então basicamente o que eu tenho agora é:

sed '/test/ s/abc/zz/g' sample

Isto irá basicamente olhar através das linhas e ver se ele tem teste e que muda o abc para zz se estiver nessa linha.

Mas como faço isso apenas para a quarta linha?

Eu tentei

 sed '/test/ 4s/abc/zz/g' sample

Adicionando o 4 na frente dos s, mas não funciona.

    
por shawn edward 15.02.2016 / 08:56

4 respostas

2

Um caminho:

sed -e '4 {
  /test/s/abc/zz/g
}' <file
    
por 15.02.2016 / 09:03
0

Não tenho certeza, mas algo assim funcionaria?

awk 'NR==4 {print $0}' filename.txt | grep 'test' | sed 's/abc/xyz/g'
    
por 27.03.2018 / 08:22
-1

de outra forma:

encontre primeiro a linha com essa string "test":

LINE = $ (grep arquivo "teste" -n | awk '{print $ 1}' | cut -d ':' -f1 | xargs)

usando a variável LINE do:

sed "s $ LINEs / abc / zzz / g" arquivo

    
por 23.11.2017 / 15:00
-1

você pode usar isso

sed -i '4s/old_text/new_text/g' file_name
    
por 21.02.2018 / 05:52

Tags