Bash
使用逗號分隔的數據作為命令的單獨參數
我正在
xargs
與 一起使用cut
,但我不確定如何將輸出獲取cut
到我可以通過管道用於進一步處理的變數。所以,我有一個像這樣的文本文件:
test.txt
:/some/path/to/dir,filename.jpg /some/path/to/dir2,filename2.jpg ...
我這樣做:
cat test.txt | xargs -L1 | cut -d, -f 1,2 /some/path/to/dir,filename.jpg
但我想做的是:
cat test.txt | xargs -L1 | cut -d, -f 1,2 | echo $1 $2
在哪裡
$1
和$2
是/some/path/to/dir
和filename.jpg
。我很難過我似乎無法做到這一點。
我想要實現的是:
read_somehow_the text_fields_from text_file | ./mypgm -i $1 -o $2
GNU
parallel
有比xargs
讀取列數據更多的選擇;你可以使用$ parallel --colsep , echo ./mypgm -i {1} -o {2} :::: test.txt ./mypgm -i /some/path/to/dir -o filename.jpg ./mypgm -i /some/path/to/dir2 -o filename2.jpg
或者,使用 shell 循環:
$ while IFS=, read -r x y rest_if_any_ignored; do echo ./mypgm -i "$x" -o "$y"; done < test.txt ./mypgm -i /some/path/to/dir -o filename.jpg ./mypgm -i /some/path/to/dir2 -o filename2.jpg
echo
一旦您對它正在做正確的事情感到滿意,請刪除它。