![通过 grep 查找文件中的绝对名称](https://linux22.com/image/173605/%E9%80%9A%E8%BF%87%20grep%20%E6%9F%A5%E6%89%BE%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E7%BB%9D%E5%AF%B9%E5%90%8D%E7%A7%B0.png)
我使用命令:
grep "pdp" /3.log
用于搜索包含pdp
详细信息的行。但我也得到了fpdp
,spdp
..
如何仅过滤我选择的相关名称?
答案1
我怀疑你想要:
grep -w pdp /3.log
-w, --word-regexp 仅选择包含构成整个单词的匹配项的行。测试是匹配的子字符串必须位于行的开头,或者前面有一个非单词组成字符。同样,它必须位于行尾或后跟非单词组成字符。单词组成字符是字母、数字和下划线。如果还指定了 -x,则此选项无效。
答案2
正如 JRFerguson 提到的,您可以使用 grep -w pdp 来仅获取匹配的结果,或者您可以使用 find:
[root@testvm ~]# ls -lrth
total 4.0K
-rw-------. 1 root root 1.4K Mar 16 13:39 anaconda-ks.cfg
-rw-r--r--. 1 root root 0 May 19 18:11 pdp
-rw-r--r--. 1 root root 0 May 19 18:11 pdpabc
-rw-r--r--. 1 root root 0 May 19 18:11 abcpdp
-rw-r--r--. 1 root root 0 May 19 18:11 3pdp
[root@testvm ~]# find . -regex "\./pdp"
./pdp
如果您愿意移动或删除那些匹配的内容,那么使用 find 可能会很有用:
find . -regex "\./pdp" -exec mv /tmp \;