如何搜索包含$和;的字符串在Linux中

时间:2019-07-17 21:20:36

标签: unix awk

我运行了ldapsearch命令,并将输出重定向到一个文件(每次运行该命令时都覆盖同一文件),我必须搜索3个字符串,其中2个字符串中有$和;在里面。

文件 example.txt

中的内容
<some lines above>
changenumber;demo$host-example_good1$fine-example_good2
changenumber;echo$fine-example_good2$host-example_good1
changenumber;echo$host-example_good1$fine-example_good2
changenumber;demo$fine-example_good2$host-example_good1
<some lines below>
<end of file>

尝试了以下命令

awk -F";|$" '/echo$host-example_good1$fine-example_good2'/ example.txt

awk -F"[$;]" '/demo$host-example_good1$fine-example_good2'/ example.txt

输出:不显示任何内容

预期产量

changenumber;demo$host-example_good1$fine-example_good2
changenumber;echo$host-example_good1$fine-example_good2

2 个答案:

答案 0 :(得分:2)

$在正则表达式中有特殊含义,您需要对其进行转义。

awk -F'[;$]' '/demo\$host-example_good1\$fine-example_good2'/ example.txt

转到regular-expressions.info阅读有关正则表达式的教程。

答案 1 :(得分:0)

要搜索字符串,请使用 string 函数,而不要使用正则表达式:

$ awk 'index($0,"$host-example_good1$fine-example_good2")' file
changenumber;demo$host-example_good1$fine-example_good2
changenumber;echo$host-example_good1$fine-example_good2