1

嗨,我想在 for 循环中使用 gawk。像这样的东西:

for i in gawk {print $1} | tr '\n' ' '
do something using $i

这当然行不通。想法?

4

3 回答 3

3

您缺少反引号或$(...)评估 awk 命令。

for i in $(ls -l | gawk '{print $1}' | tr '\n' ' ')
do
       echo $i
done

尽管不需要最后一个 tr 命令,因为$(...)在此上下文中,隐式命令的输出会将换行符转换为空格。

于 2009-09-07T22:24:02.370 回答
1

在上面提供的答案中,gawk 是子例程,bash 是驱动程序。

另一种方法是使用其内置的系统命令来制作 gawk 驱动程序。

例如:

ls | gawk '/^a/ { system("ls -lsa " $1)}'

如果(例如)您发现 Bash 的字符串处理工具有点过于神秘,这会更方便。

于 2012-10-08T03:25:15.573 回答
0

带有 awk / gawk 示例的 shell 代码

for i in `echo how now | gawk '/how/ { print $2 }'`; do
    echo ...$i
done

$ sh test.sh
...now
$ 
于 2009-09-07T22:29:09.053 回答