嗨我想在for循环中使用gawk。这样的事情:
for i in gawk {print $1} | tr '\n' ' '
do something using $i
这当然不起作用。想法?
答案 0 :(得分:3)
您缺少反引号或$(...)
来评估awk命令。
for i in $(ls -l | gawk '{print $1}' | tr '\n' ' ')
do
echo $i
done
虽然不需要最后一个tr命令,因为隐式$(...)
命令的输出会在此上下文中将换行符转换为空格。
答案 1 :(得分:1)
在上面提供的答案中,gawk是子程序,而bash是驱动程序。
另一种方法是使用内置的 system 命令使驱动程序变得笨拙。
例如:
ls | gawk '/^a/ { system("ls -lsa " $1)}'
如果(例如)你发现Bash的字符串处理工具有点过于神秘,那就更方便了。
答案 2 :(得分:0)
for i in `echo how now | gawk '/how/ { print $2 }'`; do
echo ...$i
done
和
$ sh test.sh
...now
$