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

标签 linux bash shell loops awk

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

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

这似乎有效,但仅适用于输出的第一行。它还要求我按回车键以获取 ./lookup 脚本的输出。有什么想法或帮助吗?谢谢!

最佳答案

grepawk 的输出通过管道传递给循环:

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

顺便说一句,通常不需要同时使用 grepawk,因为 awk 可以进行正则表达式匹配。所以你可以这样写:

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

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

关于linux - Bash 脚本 - Grep/Awk 输出作为另一个脚本的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26134519/

相关文章:

linux - 为什么 System.map 没有任何用于小对象(全局)的初始化数据部分的条目

c - lseek读取/proc/pid/mem的偏移量

mysql - Linux bash MySQL 载入文件

linux - 为目录中的所有文件生成MD5sum,并在另一个目录中获取它们的匹配项

linux - 语法错误 : redirection unexpected

linux - 如何从 pid 中找到 bash 脚本名称?

linux - 如何将带有多个引号/特殊字符的行回显到文件中?

linux - 从 udev 启动的脚本不再具有 DISPLAY 访问权限?

C++/C : Move Directory to Another Location

linux - 从文件中查找并返回一个 if 代码块