Kur*_*aze 4 bash awk shell-script
我正在使用 awk 从一组文本文件中提取行。文件如下所示:
1000 1 75
1000 2 76
1001 1 76
1001 2 80
Run Code Online (Sandbox Code Playgroud)
我正在使用此命令搜索其中的几个目录:
awk -F"\t" '$3 == "76" { print $1"\t"$2}' ../benchmark/*/labels.txt
Run Code Online (Sandbox Code Playgroud)
awk 给了我正确的输出:
1000 2
1001 1
Run Code Online (Sandbox Code Playgroud)
现在对于每个找到的行,我必须执行一个脚本,将这两个数字作为参数传递,如下所示:
./build.oct 1000 2
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法是什么?我并不真正关心脚本控制台输出(它生成文件)。
您还可以使用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
Run Code Online (Sandbox Code Playgroud)
正如评论建议你也可以简化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
Run Code Online (Sandbox Code Playgroud)