我运行了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
答案 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