dla exmaple za pomocą polecenia
cat foo.txt | xargs -I{} -n 1 -P 1 sh -c "echo {} | echo"
foo.txt
Zawiera dwie linie
foo
bar
Powyższe polecenie nic nie drukuje.
dla exmaple za pomocą polecenia
cat foo.txt | xargs -I{} -n 1 -P 1 sh -c "echo {} | echo"
foo.txt
Zawiera dwie linie
foo
bar
Powyższe polecenie nic nie drukuje.
cat foo.txt | xargs -J % -n 1 sh -c "echo % | bar.sh"
Chodzi o to, że xargs wykonuje niejawne wywołanie podpowłoki. Wywołano tutaj jawnie, a rura nie staje się częścią przenośnika macierzystego
cat foo.bar | wc -l
icat foo.bar | xargs -J % -n 1 sh -c "echo % | wc -l"
-I
zamiast-J
;-J
xargs nie ma opcjixargs
ma-J
opcję, która jest odpowiednikiem-i
linuksaxargs
-J
nie jest zdefiniowany w POSIX, ale-I
jest i ma inne zastosowanie niż GNU.)Jeśli chcesz przetworzyć wszystkie linie foo.txt, będziesz musiał użyć pętli. Użyj,
&
aby umieścić proces w tleJeśli dane wejściowe zawierają spacje, tymczasowo ustaw wewnętrzny separator pól na nowy wiersz
źródło
xargs
użytego OP.