por exemplo, usando o comando
cat foo.txt | xargs -I{} -n 1 -P 1 sh -c "echo {} | echo"
O foo.txt
contém duas linhas
foo
bar
O comando acima não imprime nada.
por exemplo, usando o comando
cat foo.txt | xargs -I{} -n 1 -P 1 sh -c "echo {} | echo"
O foo.txt
contém duas linhas
foo
bar
O comando acima não imprime nada.
cat foo.txt | xargs -J % -n 1 sh -c "echo % | bar.sh"
A parte complicada é que o xargs realiza a invocação implícita do subshell. Aqui, é invocado explicitamente e o tubo não se torna parte do transportador pai
cat foo.bar | wc -l
ecat foo.bar | xargs -J % -n 1 sh -c "echo % | wc -l"
-I
vez de-J
; não há-J
opção para xargsxargs
ter-J
opção que é equivalente ao-i
do linuxxargs
-J
Não está definido no POSIX, mas-I
é e tem um uso diferente do GNU do.)Se você deseja processar todas as linhas de foo.txt, precisará usar um loop. Use
&
para colocar o processo em segundo planoSe sua entrada contiver espaços, configure temporariamente o separador de campo interno para a nova linha
fonte
xargs
OP usado.