2012-03-26 10 views

Respuesta

5

Creo xargs es lo más parecido a su hipotética map:

cat nums | xargs -n1 ./myscript 

o

cat nums | xargs -n1 -J ARG ./myscript ARG 

o

cat nums | xargs -I ARG ./myscript ARG 

Desafortunadamente, xargs no permite que se invoca cosas que lee de stdin, entonces tendrías para reescribir la secuencia de comandos para aceptar un argumento de línea de comandos en lugar de leer desde stdin.

+0

Específicamente, tengo un archivo de texto donde la mayoría de las líneas son direcciones IP, y para cada una, quiero ejecutar un comando wget y reemplazar esa línea de texto con el texto de respuesta de wget. –

+0

¡Ah, genial! No sabía que podría usar el interruptor '-n1' para limitar el número de argumentos por línea. –

+0

Es posible que también desee ver GNU paralelo, que no es una utilidad estándar de UNIX, pero es similar a 'xargs': http://en.wikipedia.org/wiki/Parallel_(software) –

0

Se puede usar un script bash para hacer esto. Algo así como:

#!/bin/bash 

string="| ./myscript" 

echo "9534 $string" 
echo "2343 $string" 
echo "1093 $string" 
echo "7023 $string" 

O, usted puede fácilmente llenar una matriz con sus valores numéricos y sólo hacer todo esto en un bucle.

+0

Lo sé, pero estaba esperando una forma de analizar por línea. –

+0

Sé que solía haber juegos de línea de comandos antiguos basados ​​en texto que hacían algo como lo que estás hablando. Además, supongo que VI y EMACS deben poder hacer lo que usted desea. – theJollySin

3
#!/bin/bash 
while read -r line 
do 
    "[email protected]" <<< "$line" 
done 
+0

De hecho, una secuencia de comandos simple Haz de lo que estoy hablando. Tenía curiosidad, sin embargo, si existe una utilidad de línea de comandos. –

Cuestiones relacionadas