问题在于:
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表达式以获得所需的输出?
答案 0 :(得分:1)
您可以使用awk
开关在-v
中设置变量:
PATHI="dist/"
LINE=$(awk -v p=$PATHI '/^[ \t]*$/{next} /^[ \t]*#/{next} {printf p$2" "}' .file)
答案 1 :(得分:0)
不要将PATH
用作变量名称!那已经被shell使用了。由于这个原因,总是在bash中使用小写变量:shell使用的变量总是大写的。比,您可以将变量传递给awk
:
dir="dist/"
line=$(awk -v dir=$dir '/^[ \t]*$/{next} /^[ \t]*#/{next} {printf dir$2" "}' .file)