grep 行在文件中包含确切的字符串

grep lines contain exact string in a file

我有一个包含很多行的文件
我想 grep 行包含一个使用变量的字符串,该字符串是一个 uri,如:

/wp-admin/admin-ajax.php

我只想 grep 包含确切 uri 的行:

/wp-admin/admin-ajax.php

并且不要像这样提取行:

/wp-admin/admin-ajax.php?blahblah

示例文件:

4.2.2.4 sitename.com/wp-admin/admin-ajax.php
4.2.2.4 sitename.com/wp-admin/admin-ajax.php?
4.2.2.4 sitename.com/wp-admin/admin-ajax.php?blah
4.2.2.4 sitename.com/wp-admin/admin-ajax.php?blahblah

搜索主题:

sitename.com/wp-admin/admin-ajax.php

应该像这样提取行:

4.2.2.4 sitename.com/wp-admin/admin-ajax.php

这个怎么样:

awk 'NR==FNR{a[[=10=]]; next}  in a' pattern.txt data_file.txt

假设您将数据保存在 data_file.txt 中,例如:

www.sitename.com/admin/index.php
www.sitename.com/admin
www.sitename.com/
...

以及您想在另一个文件中识别的内容,例如pattern.txt 喜欢:

www.sitename.com/admin

向 grep 添加 -F 选项以告诉它使用字符串而不是正则表达式和 -x 来处理整行:

grep -x -F "$variable"

参见手册页。

鉴于您更新的问题:

$ awk -v tgt='sitename.com/wp-admin/admin-ajax.php' '$NF==tgt' file
4.2.2.4 sitename.com/wp-admin/admin-ajax.php