2009-08-05 5 views

Respuesta

13
sed -i -e '2iYour line here' /dir/* 

Tenga en cuenta que la semántica sed -i variar según el sabor de Unix, a fin de comprobar su man sed. Esto está escrito para el sabor GNU.

+0

wow .. casi me dan ganas de aprender sed. ¡Gracias un montón! – Learning

1

este es un uso AWK en lugar de la sed,

for i in $(<list_of_files) 
do 
    awk '{if (FNR!=2) print $0; 
      else { print "new line"; print $0}}' $i > ${i}.tmp; 
    mv ${i}.tmp $i; 
done 
0
ls | xargs --replace=foo perl -i -ne 'print; print "second line text\n" unless $x++;' foo 
+0

Yo voto * nunca * para recomendar 'perl -i' sin una copia de seguridad:' perl -i.bak'. Es fácil, y puede eliminar fácilmente las copias de seguridad una vez que esté seguro de que no se equivocó de edición. – Telemachus

2
perl -pi -we'print "extra line\n" if $. == 3; close ARGV if eof' files 

El close(ARGV) es necesario reiniciar el contador de líneas $. al comienzo de cada archivo; de manera predeterminada, cuenta líneas a través de archivos.

+1

¿No crees que vale la pena '' i.bak' para protegerte de un error tipográfico que borra una gran cantidad de datos? (Imagine que olvida '-p'.) – Telemachus

+0

@Telemachus: al hacer un directorio completo, prefiero copiar primero el directorio completo (por ejemplo, cp -a dir {,. Save}); entonces puedo devolverlo si es necesario. – ysth

Cuestiones relacionadas