AIX sh,如何用字符串中的双引号grep表达式?

时间:2016-05-31 12:11:02

标签: bash shell unix scripting grep

我需要在日志中找到包含服务器名称的所有行。 所以我在我的剧本中做到了:

    grep $x ./input_log_files.csv >> test.txt

其中x包含服务器名称。

问题是这样,我还会以较长的名称捕获包含服务器名称的行。要清楚,我们这里有一个AIXserver,还有一个名为VAIXserver的虚拟服务器。所以当我搜索第一个时,我也会得到另一个。 在我的日志文件中,服务器名称用双引号括起来。我拼命试图用双引号在服务器名称上grep。我也尝试使用“AIXserver”中的逗号,但没有成功。

如何强制grep考虑双引号? 我尝试使用单引号,转义字符......但没有成功。

谢谢你的帮助。 B 2

2 个答案:

答案 0 :(得分:1)

grep -w $x ./input_log_files.csv >> test.txt

备用选项

perl -ne 'print if /\b$x\b/' ./input_log_files.csv >> test.txt

答案 1 :(得分:0)

确保变量包含引号:

x='"sname"'

并引用它:

$ testval=$'sname\nVsname\n"sname"\n"Vsname"\n"sname2"'

$ echo "$testval"
sname
Vsname
"sname"
"Vsname"
"sname2"

$ echo "$testval" | grep "$x"
"sname"

对于您的命令行:

grep "$x" ./input_log_files.csv >> test.txt