0

问题如下:

solaris:~/src/brk$ cat .file
one xxx 123
two yyy 123

three bbb 321

four xyz 123

脚本:

solaris:~/src/brk$ cat scr.sh
... 
PATH="dist/"
LINE=$(awk '/^[ \t]*$/{next} /^[ \t]*#/{next} {printf $2" "}' .file)
echo "LINE=$LINE"
...

输出:

xxx yyy bbb xyz

我想要以下输出:

dist/xxx dist/yyy dist/bbb dist/xyz

如何修改 awk 表达式以获得所需的输出?

4

2 回答 2

1

awk您可以使用-v开关设置变量:

PATHI="dist/"
LINE=$(awk -v p=$PATHI '/^[ \t]*$/{next} /^[ \t]*#/{next} {printf p$2" "}' .file)
于 2013-10-29T10:22:21.167 回答
0

不要PATH用作变量名!这已经被shell使用了。出于这个原因,在 bash 中总是使用小写变量:shell 使用的变量总是大写的。比,您可以将变量传递给awk

dir="dist/"
line=$(awk -v dir=$dir '/^[ \t]*$/{next} /^[ \t]*#/{next} {printf dir$2" "}' .file)
于 2013-10-29T10:22:54.790 回答