Shell 用于grep文件中特定单词的unix命令
我有一个这样的文件Shell 用于grep文件中特定单词的unix命令,shell,unix,Shell,Unix,我有一个这样的文件 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 我需要在命令中
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
我需要在命令中修改哪些内容?- 您不需要
cat
- 将shell cmd放在back ticks中,cmd的结果将作为new命令执行,这就是出现错误msg的原因
- 如果您只想查看结果,只需
grep'TYPE'文件
- 如果要将结果分配给某个变量,
result=“$(grep'TYPE'file)”
grep
的输出作为命令执行
首先,您不需要外部程序cat
,grep
将输入文件名作为参数。其次,明智的做法是总是用单引号括起您正在寻找的模式,以保护它不受外壳的影响。在这种情况下,这不是严格要求,但养成以下习惯是一个好习惯:
grep 'TYPE' file
现在,该命令将结果写入标准输出(屏幕)。如果要将其存储在变量中,请使用$()
表示法,而不是不推荐使用的反勾号:
var=$(grep 'TYPE' file)
现在,您可以使用$var
执行您喜欢的操作
你说你想要“单词”类型
。如果文件中有这一行怎么办:
String(`UNTYPELESS',`ABC')dnl
你搜索类型
也会找到它!如果要检查单词边界,可以使用egrep
:
egrep '\bTYPE\b' file
\b
表示单词边界(基本上是任何非字母、文本开头或文本结尾)必须存在于模式中的该点