使用逗号分隔的数据作为命令的单独参数

使用逗号分隔的数据作为命令的单独参数

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

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

相关内容