GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo uso las líneas de un archivo como argumentos de un comando?

command `< file`

pasará el contenido del archivo al comando en stdin, pero eliminará las líneas nuevas, lo que significa que no podrá iterar sobre cada línea individualmente. Para eso, podría escribir un script con un bucle 'for':

for line in `cat input_file`; do some_command "$line"; done

O (la variante multilínea):

for line in `cat input_file`
do
    some_command "$line"
done

O (variante multilínea con $() en lugar de `` ):

for line in $(cat input_file)
do
    some_command "$line"
done

Referencias:

  1. Para sintaxis de bucle:https://www.cyberciti.biz/faq/bash-for-loop/

Como ya se mencionó, puede usar los acentos graves o $(cat filename) .

Lo que no se mencionó, y creo que es importante tener en cuenta, es que debe recordar que el shell dividirá el contenido de ese archivo de acuerdo con los espacios en blanco, dando cada "palabra" que encuentre a su comando como argumento. Y aunque puede incluir un argumento de línea de comando entre comillas para que pueda contener espacios en blanco, secuencias de escape, etc., leer el archivo no hará lo mismo. Por ejemplo, si su archivo contiene:

a "b c" d

los argumentos que obtendrá son:

a
"b
c"
d

Si desea extraer cada línea como un argumento, use la construcción while/read/do:

while read i ; do command_name $i ; done < filename

Lo haces usando acentos graves:

echo World > file.txt
echo Hello `cat file.txt`

Si su shell es bash (entre otros), un atajo para $(cat afile) es $(< afile) , entonces escribirías:

mycommand "$(< file.txt)"

Documentado en la página de manual de bash en la sección 'Sustitución de comandos'.

Alternativamente, haga que su comando se lea desde stdin, entonces:mycommand < file.txt


Linux
  1. Cómo usar el comando grep de Linux

  2. Cómo usar el comando de historial en Linux

  3. Cómo usar el comando Tar en Linux

  4. ¿Cómo usar el comando basename?

  5. Cómo usar sed para eliminar las últimas n líneas de un archivo

Cómo usar el comando de cabeza de Linux

Cómo usar el comando diff de Linux

Cómo usar el comando ping de Linux

Cómo usar Sudo y el archivo Sudoers

Cómo usar el comando uniq para procesar listas en Linux

¿Cómo usar el comando Gzip en Linux?