Solusi 1:
GNU xargs (default di Linux; instal findutils
dari MacPorts di OS X untuk mendapatkannya) mendukung -d
yang memungkinkan Anda menentukan pembatas khusus untuk masukan, sehingga Anda dapat melakukan
ls *foo | xargs -d '\n' -P4 foo
Solusi 2:
Sesuatu di sepanjang garis
alias myxargs='perl -p -e "s/\n/\0/;" | xargs -0'
cat nonzerofile | myxargs command
harus bekerja.
Solusi 3:
Dengan Bash, saya biasanya lebih suka menghindari xargs untuk apa pun yang paling tidak rumit, demi loop saat membaca. Untuk pertanyaan Anda, while read -ar LINE; do ...; done
melakukan tugasnya (ingat untuk menggunakan sintaks array dengan LINE, mis., ${LINE[@]}
untuk seluruh baris). Ini tidak memerlukan tipuan apa pun:secara default baca hanya menggunakan \n
sebagai karakter terminator garis.
Saya harus memposting pertanyaan di SO tentang pro &kontra dari xargs vs. while-read loops... selesai!
Solusi 4:
$ echo "1\n2 3\n4 5 6" | xargs -L1 echo "#"
# 1
# 2 3
# 4 5 6