我有一个测试数据文件,如下所示
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代码有什么问题。
答案 0 :(得分:4)
awk正在查看文字文本$Data2
和awk "/$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");