我有一个针对文件运行的脚本,它接受用户的参数,并通过grep和awk发送以获得所需的列。它将返回多行。我想做的是读取(或类似的东西)grep|awk的输出,并通过另一个脚本(./lookup)运行它。我的问题是如何循环遍历每一行,并通过脚本中的脚本运行该行上的内容。希望这是有意义的,我是脚本和linux的新手。
#!/bin/sh
x=$(grep "$*" "$c"|awk '{print $6}')
while read LINE
do
./lookup $x
done
这似乎有效,但仅适用于输出的第一行。它还需要我点击回车键才能从中获得输出/查找脚本。有什么想法或帮助吗?谢谢
将grep
和awk
的输出管道传输到循环:
grep "$*" "$c" | awk '{print $6}' | while read LINE
do
./lookup "$LINE"
done
顺便说一句,通常不需要同时使用grep
和awk
,因为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