我有一个像这样的模式的文件
String(`TYPE',`ABC')dnl
String('TYPE',`BCD')dnl
和其他一些类似的行,所以我想要这一行String(
TYPE',ABC')dnl
我正在使用此命令
cat file | grep TYPE
给了我想要的输出,但当我在一个脚本中使用相同的命令时,它会抛出一个错误
`cat file | grep TYPE`
-bash: define(`TYPE',`ABC')dnl: command not found
我需要在命令中修改什么?
答案 0 :(得分:1)
问题在于grep
的输出由于后退而被作为命令执行。
首先,您不需要外部程序cat
,grep
将输入文件名作为参数。其次,最好用单引号括起你正在寻找的模式,以保护它免受外壳的影响。在这种情况下,并不是严格要求,但这是一个很好的习惯:
grep 'TYPE' file
现在,该命令会将结果写入标准输出(屏幕)。如果您希望将其存储在变量中,请使用$( )
表示法而不是弃用的后记:
var=$(grep 'TYPE' file)
现在,您可以使用$var
执行您喜欢的操作。
你说你想要"字" TYPE
。如果您的文件中包含以下内容该怎么办:
String(`UNTYPELESS',`ABC')dnl
您对TYPE
的搜索也会选择它!如果要检查字边界,可以使用egrep
:
egrep '\bTYPE\b' file
\b
表示在模式中的那一点必须存在单词边界(基本上是任何非alpha,或文本的开头或文本结尾)。
答案 1 :(得分:0)
cat
grep 'TYPE' file
RESULT="$(grep 'TYPE' file)"