【发布时间】:2009-09-07 22:19:12
【问题描述】:
您好,我想在 for 循环中使用 gawk。像这样:
for i in gawk {print $1} | tr '\n' ' '
do something using $i
这当然行不通。想法?
【问题讨论】:
您好,我想在 for 循环中使用 gawk。像这样:
for i in gawk {print $1} | tr '\n' ' '
do something using $i
这当然行不通。想法?
【问题讨论】:
您缺少反引号或 $(...) 来评估 awk 命令。
for i in $(ls -l | gawk '{print $1}' | tr '\n' ' ')
do
echo $i
done
虽然不需要最后一个 tr 命令,因为 $(...) 隐式命令的输出将在此上下文中将换行符转换为空格。
【讨论】:
在上面提供的答案中,gawk 是子例程,bash 是驱动程序。
另一种方法是使用其内置的 system 命令制作 gawk 驱动程序。
例如:
ls | gawk '/^a/ { system("ls -lsa " $1)}'
如果(例如)您发现 Bash 的字符串处理工具有点过于神秘,这会更方便。
【讨论】:
for i in `echo how now | gawk '/how/ { print $2 }'`; do
echo ...$i
done
和
$ sh test.sh
...now
$
【讨论】: