私はawkを使用してテキストファイルセットから行を抽出しています。ファイルは次のようになります。
1000 1 75
1000 2 76
1001 1 76
1001 2 80
次のコマンドを使用して、これらのディレクトリのいくつかを検索しています。
awk -F"\t" '$3 == "76" { print $1"\t"$2}' ../benchmark/*/labels.txt
awkは私に正しい出力を与えます。
1000 2
1001 1
これで、見つかった各行に対して、次のようにこれら2つの数値をパラメータとして渡すスクリプトを実行する必要があります。
./build.oct 1000 2
これを行う正しい方法は何ですか?私はスクリプトコンソール出力(ファイル生成)にあまり興味がありません。
ベストアンサー1
xargs
(を使用-l
して各行に対して別々のコマンドを実行させることもできます):
timp@helez:~/tmp$ awk -F"\t" '$3 == "76" { print $1"\t"$2}' test.txt | xargs -l ./build.oct
$1 is 1000 and $2 is 2
$1 is 1001 and $2 is 1
timp@helez:~/tmp$ cat test.txt
1000 1 75
1000 2 76
1001 1 76
1001 2 80
timp@helez:~/tmp$ cat build.oct
echo '$1 is ' $1 ' and $2 is ' $2
コメントで提案されているように、およびおよびタブとスペースawk
に分割さawk
れているため、コマンドを単純化することもできます。xargs
timp@helez:~/tmp$ awk '$3 == "76" {print $1,$2}' test.txt | xargs -l ./build.oct
$1 is 1000 and $2 is 2
$1 is 1001 and $2 is 1