Um caminho:
sed -e '4 {
/test/s/abc/zz/g
}' <file
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.
Não tenho certeza, mas algo assim funcionaria?
awk 'NR==4 {print $0}' filename.txt | grep 'test' | sed 's/abc/xyz/g'
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
você pode usar isso
sed -i '4s/old_text/new_text/g' file_name
Tags sed