Preciso usar o sed para alterar uma string em um arquivo apenas na 4ª linha se ele contiver uma string chamada "teste"
Então, basicamente, o que consegui agora é:
sed '/test/ s/abc/zz/g' sample
Basicamente, isso examinará as linhas e verá se tem teste e depois alterará o abc para zz se estiver nessa linha.
Mas como faço isso apenas para a 4ª linha.
tentei
sed '/test/ 4s/abc/zz/g' sample
Adicionando o 4 na frente do s , mas não funciona.
Responder1
Mão Única:
sed -e '4 {
/test/s/abc/zz/g
}' <file
Responder2
Não tenho certeza, mas algo assim funcionaria?
awk 'NR==4 {print $0}' filename.txt | grep 'test' | sed 's/abc/xyz/g'
Responder3
outra maneira:
primeiro encontre a linha com a string "test":
LINHA=$(grep "teste" arquivo -n | awk '{print $1}' | cut -d ':' -f1 | xargs)
então usando essa variável LINE faça:
sed arquivo "s$LINEs/abc/zzz/g"
Responder4
você pode usar isso
sed -i '4s/old_text/new_text/g' file_name