カンマ区切りデータをコマンドの別の引数として使用する

カンマ区切りデータをコマンドの別の引数として使用する

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

またはシェルループを使用してください。

$ 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正しいことをしていると確信している場合は、削除してください。

おすすめ記事