Necesito usar sed para cambiar una cadena en un archivo solo en la cuarta línea si contiene una cadena llamada "prueba"
Básicamente, lo que tengo ahora es:
sed '/test/ s/abc/zz/g' sample
Básicamente, esto revisará las líneas y verá si tiene prueba y luego cambiará abc a zz si está en esa línea.
Pero como lo hago solo para la 4ta linea.
Lo intenté
sed '/test/ 4s/abc/zz/g' sample
Agregando el 4 delante de la s, pero no funciona.
Respuesta1
De una sola mano:
sed -e '4 {
/test/s/abc/zz/g
}' <file
Respuesta2
No estoy seguro, pero ¿funcionaría algo como esto?
awk 'NR==4 {print $0}' filename.txt | grep 'test' | sed 's/abc/xyz/g'
Respuesta3
de otra manera:
primero busque la línea con esa cadena "prueba":
LINE=$(grep archivo "prueba" -n | awk '{print $1}' | cut -d ':' -f1 | xargs)
luego usando esa variable LINE haz:
archivo sed "s$LINEs/abc/zzz/g"
Respuesta4
puedes usar esto
sed -i '4s/old_text/new_text/g' file_name