我需要在日志中找到包含服务器名称的所有行。 所以我在我的剧本中做到了:
grep $x ./input_log_files.csv >> test.txt
其中x包含服务器名称。
问题是这样,我还会以较长的名称捕获包含服务器名称的行。要清楚,我们这里有一个AIXserver,还有一个名为VAIXserver的虚拟服务器。所以当我搜索第一个时,我也会得到另一个。 在我的日志文件中,服务器名称用双引号括起来。我拼命试图用双引号在服务器名称上grep。我也尝试使用“AIXserver”中的逗号,但没有成功。
如何强制grep考虑双引号? 我尝试使用单引号,转义字符......但没有成功。
谢谢你的帮助。 B 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