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
答案1
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
一旦您确信它正在做正确的事情,请将其删除。