添加shell变量后,AWK脚本停止工作

时间:2015-11-06 23:18:06

标签: awk ksh

我有以下代码(感谢这个社区的成员)表现得非常奇怪。当我对其动态部分进行硬编码时...当我使用参数来运行代码时,它什么也做不了。这里是代码(有和没有变量)以及输出(截图)

echo "Attempt A:"
echo "--------------------"
echo "awk -v n=4 '{a[p]=$0; p=(p+1)%n}
              /(Something)/{for(i=p;i<p+n-1;i++) print a[i%n];f=1}
              f{print}
              /\/Interface/{f=0}' file.log | awk 'BEGIN{ORS=RS=\"</Interface>\n -------------------\"}
      /name=\"Andy\"/' > AttemptA.txt"

awk -v n=4 '{a[p]=$0; p=(p+1)%n}
              /(Something)/{for(i=p;i<p+n-1;i++) print a[i%n];f=1}
              f{print}
              /\/Interface/{f=0}' file.log | awk 'BEGIN{ORS=RS="</Interface>\n -------------------"}
      /Name="Andy"/' > AttemptA.txt

aaid="Andy"
aalog=file.log

echo "-------------------------------------------------------------------------------------------------"
echo "-------------------------------------------------------------------------------------------------"
echo ""
echo ""
echo "Attempt B:"
echo "awk -v n=4 '{a[p]=$0; p=(p+1)%n}
              /(Something)/{for(i=p;i<p+n-1;i++) print a[i%n];f=1}
              f{print}
              /\/Interface/{f=0}' ${aalog} | awk 'BEGIN{ORS=RS=\"</Interface>\n -------------------\"}
      /Name=\"${aaid}\"/' > AttemptB.txt"

awk -v n=4 '{a[p]=$0; p=(p+1)%n}
              /(Something)/{for(i=p;i<p+n-1;i++) print a[i%n];f=1}
              f{print}
              /\/Interface/{f=0}' ${aalog} | awk 'BEGIN{ORS=RS="</Interface>\n -------------------"}
      /Name="${aaid}"/' > AttemptB.txt

以下是结果(截图):

运行代码:http://imgur.com/FEJW5uR

创建的文件:http://imgur.com/NytUL02

知道为什么它会识别所有内容,打印相同的命令,但其中一个实际上有效,而另一个却没有?

1 个答案:

答案 0 :(得分:3)

awk -v aaid="$aaid" 'BEGIN{ORS=RS="</Interface>\n -------------------"}
    $0 ~ "Name=\""aaid"\""' > AttemptB.txt