2013-05-05 97 views
-2

我想从一个文件a.txt得到一些具体的行,代码是这样的:抑制变量扩展在awk命令

cat a.txt | awk '{if($0 > 100) print}' 

,它工作正常。

,但出于某种原因,我必须把上面的命令到这样一个变量:

cmd="cat a.txt | awk '{if($0 > 100) print}'" 

和我有一个问题作出$0,因为它会扩张到脚本的第一个参数,远离实际应该是什么。

我该如何解决它?

+1

而不是'cat a.txt | awk ...',只要'awk'$ 0> 100'a.txt' – 2013-05-05 16:05:48

+2

为什么你想要一个字符串中的命令?正如你刚才所证明的那样,它让生活变得非常困难。 – 2013-05-05 16:09:28

+0

您没有向我们展示脚本的某些部分存在错误。最有可能的是一个不匹配的单引号字符,因此awk命令的开头引号被视为该早期无法匹配的引号的结束引号。 – 2013-05-05 23:57:24

回答

0

只需在$之前加上反斜杠直到它工作。

+0

是的,它的工作原理,谢谢。 – Alcott 2013-05-05 14:09:38

+3

与其添加反斜杠“直到它工作”,最好考虑为什么反斜杠是必需的。如果字符串包含多个特殊字符,那么耗尽添加的转义字符的排列将是乏味和脆弱的! – 2013-05-05 16:07:43

+1

不!这绝对是一件错误的事情。脚本中的其他地方存在一个错误,这会导致您在此行中看到的行为,并在各个位置粘贴随机角色,以尝试让错误消息消失,这绝对会让您回头路过。 – 2013-05-05 23:55:34