我有一个针对文件运行的脚本,它从用户那里获取参数并通过 grep 和 awk 发送以获得所需的列。它将返回多行。我想要做的是通过 grep|awk 的输出读取(或类似的东西)并通过另一个脚本(./lookup)运行它。我的问题是如何循环遍历每一行并通过脚本中的脚本运行该行上的内容。希望这是有道理的,我是脚本和 Linux 的新手。
#!/bin/sh
x=$(grep "$*" "$c"|awk '{print $6}')
while read LINE
do
./lookup $x
done
这似乎有效,但仅适用于输出的第一行。它还要求我按回车键以获取 ./lookup 脚本的输出。有什么想法或帮助吗?谢谢!
最佳答案
将 grep
和 awk
的输出通过管道传递给循环:
grep "$*" "$c" | awk '{print $6}' | while read LINE
do
./lookup "$LINE"
done
顺便说一句,通常不需要同时使用 grep
和 awk
,因为 awk
可以进行正则表达式匹配。所以你可以这样写:
awk -v re="$*" '$0 ~ re {print $6}' "$c" | while ...
-v
选项设置一个awk
变量,~
运算符执行正则表达式匹配。 $0
指的是整个输入行。
关于linux - Bash 脚本 - Grep/Awk 输出作为另一个脚本的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26134519/