
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
またはシェルループを使用してください。
$ 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
正しいことをしていると確信している場合は、削除してください。