GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo puedo anteponer una cadena al comienzo de cada línea en un archivo?

un comando awk de una línea también debería funcionar:

awk '{print "prefix" $0}' file

El bucle completo se puede reemplazar con un solo comando sed que opera en todo el archivo:

sed -e 's/^/prefix/' $file

Con respecto a su error original:

./appendToFile.sh:línea 11:/bin/sed:Lista de argumentos demasiado larga

El problema está en esta línea de código:

sed -e 's/^/prefix/' $line

$line en este contexto es nombre de archivo que sed corre en contra. Para corregir su código, debe arreglar esta línea como tal:

echo $line | sed -e 's/^/prefix/'

(También tenga en cuenta que su código original no debe tener el < $file al final.)

William Pursell aborda este problema correctamente en sus dos sugerencias.

Sin embargo, creo que ha identificado correctamente que hay un problema con su archivo de texto original. dos2unix no corregirá este problema, ya que solo elimina los retornos de carro de Windows al final de las líneas. (Sin embargo, si está intentando leer un archivo de Linux en Windows, obtendrá una línea gigantesca sin retornos).

Asumiendo que no es un problema con los caracteres de fin de línea en su archivo de texto, las respuestas de William Pursell, Andy Lester o nullrevolution funcionarán.

Una variación del while read... sugerencia:

while read -r line; do  echo "PREFIX " $line; done < $file

Esto podría ejecutarse directamente desde el shell (no es necesario un archivo de script/lote):

while read -r line; do echo "kp" $line; done < stusers.txt

Una forma Perl de hacerlo sería:

perl -p -e's/^/prefix' filename

o

perl -p -e'$_ = "prefix $_"' filename

En cualquier caso, eso se lee desde filename e imprime las líneas prefijadas en STDOUT.

Si agrega un -i entonces Perl modificará el archivo en su lugar. También puede especificar varios nombres de archivo y Perl los hará todos mágicamente.


Linux
  1. Cómo insertar texto al comienzo de cada línea en Vim

  2. ¿Cómo recorrer las líneas de un archivo?

  3. ¿Cómo dividir un archivo y mantener la primera línea en cada una de las piezas?

  4. En Bash, ¿cómo agrego una cadena después de cada línea en un archivo?

  5. En un shell de Linux, ¿cómo puedo procesar cada línea de una cadena de varias líneas?

Cómo agregar texto al comienzo del archivo en Linux

Agregue una cadena de prefijo al comienzo de cada línea

¿Cómo puedo agregar un pie de página al final de cada página de un archivo postscript o pdf en Linux?

¿Cómo puedo agregar una cadena al comienzo de cada archivo en una carpeta en bash?

Cómo agregar una cadena de fecha a cada línea de un archivo de registro escrito continuamente

¿Cómo puedo encontrar el archivo más antiguo en un árbol de directorios?