Bash Scripting-将Grep/Awk输出作为另一个脚本的输入



我有一个针对文件运行的脚本,它接受用户的参数,并通过grep和awk发送以获得所需的列。它将返回多行。我想做的是读取(或类似的东西)grep|awk的输出,并通过另一个脚本(./lookup)运行它。我的问题是如何循环遍历每一行,并通过脚本中的脚本运行该行上的内容。希望这是有意义的,我是脚本和linux的新手。

#!/bin/sh
x=$(grep "$*" "$c"|awk '{print $6}')
while read LINE   
do
./lookup $x
done

这似乎有效,但仅适用于输出的第一行。它还需要我点击回车键才能从中获得输出/查找脚本。有什么想法或帮助吗?谢谢

grepawk的输出管道传输到循环:

grep "$*" "$c" | awk '{print $6}' | while read LINE
do
    ./lookup "$LINE"
done

顺便说一句,通常不需要同时使用grepawk,因为awk可以进行regexp匹配。所以你可以写:

awk -v re="$*" '$0 ~ re {print $6}' "$c" | while ...

-v选项设置awk变量,~运算符执行正则表达式匹配。$0是指整个输入线。

您也可以使用xargs而不是循环

同样正如巴尔玛所说的,不需要grep。

awk -va="$*" '$0~a{print $6}' "$C" | xargs ./lookup

最新更新