为什么awk的结果似乎不起作用

时间:2016-08-31 11:48:49

标签: shell awk

我有一个测试数据文件,如下所示

PAT1
3    - first block
4
PAT2
PAT3
7    - second block
PAT4
PAT5
10    - third block
PAT6 
PAT7
12    - forth block

如果我从shell运行以下命令行来查找PAT1和PAT5之间的行,包括包含两个字符串的行,它可以从shell提示中正常工作。

 
awk '/PAT1/, /PAT5/ ' test_file 

结果如下:

PAT1
3    - first block
4
PAT2
PAT3
7    - second block
PAT4
PAT5

但是如果我想在shell脚本文件中执行这个awk命令行,它就不再工作了,而且results.txt文件中没有任何内容。

#!/bin/sh

Data="PAT1"             
Data2="PAT2"                                    

echo "$Data, $Data2"
awk '/$Data/, /$Data2/' test_file > results.txt

我相信awk代码的语法在shell脚本中是错误的。我试图阅读页面link,但我无法快速弄清楚我的shell脚本中的awk代码有什么问题。

1 个答案:

答案 0 :(得分:4)

awk正在查看文字文本$Data2awk "/$Data/,/$Data2/" test_file > results.txt ,而不是内插值。对于这种情况,您可以(可能)只使用双引号:

/

如果数据或数据2包含awk 'match($0, data), match($0, data2)' data="$Data" data2="$Data2" test_file > results.txt ,则会失败,因此您需要:

var dateValues = $("#slider").dateRangeSlider("values");