Bash

使用逗號分隔的數據作為命令的單獨參數

  • March 15, 2022

我正在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/dirfilename.jpg

我很難過我似乎無法做到這一點。

我想要實現的是:

read_somehow_the text_fields_from text_file |  ./mypgm -i $1 -o $2

GNUparallel有比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一旦您對它正在做正確的事情感到滿意,請刪除它。

引用自:https://unix.stackexchange.com/questions/694490