嗨我有一个内容低于内容的脚本
line="17"
awk '/$line/,/\/>/{printf "%s ",$0}/\/>/{print ""}' out.txt > temp.txt
cat temp.txt
它没有显示任何输出但是在查询下方给出了我想要的结果
awk '/"17"/,/\/>/{printf "%s ",$0}/\/>/{print ""}' out.txt > temp.txt
我在下面以不同的方式使用了awk内部脚本,但没有使用
awk -v xyz="$line" '/xyz/,/\/>/{printf "%s ",$0}/\/>/{print ""}' out.txt > temp.txt
awk "/$line/,/\/>/{printf '%s ',$0}/\/>/{print ''}" out.txt > temp.txt
并且有没有办法实现与$ line完全匹配(如grep -w $ line)..
非常感谢任何帮助。
答案 0 :(得分:3)
Bash不会在单引号字符串中替换变量。
检查您正在做的事情的任何简单方法是:
echo '/$line/,/\/>/{printf "%s ",$0}/\/>/{print ""}'
有几种方法可以达到你想要的效果,这个方法看起来很可读:
awk '/"'$line'"/,/\/>/{printf "%s ",$0}/\/>/{print ""}'