0

嗨,我有一个包含以下内容的脚本

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 inside 脚本,如下所示,但没有用

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 )..

很感谢任何形式的帮助。

4

1 回答 1

3

Bash 不会替换单引号字符串中的变量。

检查您在做什么的任何简单方法是:

echo '/$line/,/\/>/{printf "%s ",$0}/\/>/{print ""}'

有几种方法可以实现你想要的,这个看起来很可读:

awk '/"'$line'"/,/\/>/{printf "%s ",$0}/\/>/{print ""}'
于 2013-08-15T00:22:51.957 回答