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

时间:2016-04-24 14:58:49

标签: bash grep lines

我有一个包含多行的文件
我想grep行包含一个使用变量的字符串,这个字符串就是这样的:

/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

2 个答案:

答案 0 :(得分:1)

-F选项添加到grep,告诉它使用字符串而不是正则表达式和-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

答案 1 :(得分:0)

这个怎么样:

awk 'NR==FNR{a[$0]; next} $1 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