gpt4 book ai didi

linux - 如何grep所有带有特定字母的单词?

转载 作者:太空宇宙 更新时间:2023-11-04 05:20:45 26 4
gpt4 key购买 nike

我想在命令输出中查找与某些字母匹配的所有单词,例如,其中包含字母 d 或 D 的所有单词。

所以,为了看看 d 在哪里,我跑了(抱歉,颜色在这里不起作用):

~$ ls -l | grep -i 'd'
drwxrwxr-x 2 user user 4096 Fev 8 02:50 %%
drwxrwxr-x 2 user user 4096 Fev 8 02:53 cd
drwxr-xr-x 3 user user 4096 Fev 4 16:10 Desktop
drwxr-xr-x 4 user user 4096 Fev 9 23:26 Documents
drwxr-xr-x 3 user user 4096 Fev 4 23:48 Downloads
-rw-r--r-- 1 user user 8980 Dez 14 01:07 examples.desktop
-rw-rw-r-- 1 user user 5 Dez 17 01:46 hud-cli
drwxr-xr-x 2 user user 4096 Dez 14 07:26 Music
drwxr-xr-x 2 user user 4096 Dez 14 07:26 Pictures
drwxr-xr-x 2 user user 4096 Dez 14 07:26 Public
drwxr-xr-x 2 user user 4096 Dez 14 07:26 Templates
drwxr-xr-x 2 user user 4096 Dez 14 07:26 Videos
drwxrwxr-x 2 user user 4096 Jan 28 00:18 VirtualBox VMs

现在,谁能向我解释为什么下面的命令不起作用,我应该使用哪一个?

~$ ls -l | grep -E -io '\b.+d.+\b'
drwxr-xr-x 3 user user 4096 Fev 4 16:10 Desktop
drwxr-xr-x 4 user user 4096 Fev 9 23:26 Documents
drwxr-xr-x 3 user user 4096 Fev 4 23:48 Downloads
rw-r--r-- 1 user user 8980 Dez 14 01:07 examples.desktop
rw-rw-r-- 1 user user 5 Dez 17 01:46 hud-cli
drwxr-xr-x 2 user user 4096 Dez 14 07:26 Music
drwxr-xr-x 2 user user 4096 Dez 14 07:26 Pictures
drwxr-xr-x 2 user user 4096 Dez 14 07:26 Public
drwxr-xr-x 2 user user 4096 Dez 14 07:26 Templates
drwxr-xr-x 2 user user 4096 Dez 14 07:26 Videos

正如你所看到的,我使用了选项 -o,它仍然为我带来了整行内容。我认为\b 会限制匹配,直到出现空格或其他特殊字符。

当我实际放置 [\b\](边框或空格)时,它真的搞砸了。

~$ ls -l | grep -E -io '[\b\ ].+d.+[\b\ ]'
1 user user 8980 Dez 14 01:07
1 user user 5 Dez 17 01:46
2 user user 4096 Dez 14 07:26
2 user user 4096 Dez 14 07:26
2 user user 4096 Dez 14 07:26 Pub
2 user user 4096 Dez 14 07:26
2 user user 4096 Dez 14 07:26
1 user user 131072 Fev 3 01:18 volume header b

那么,这是怎么回事?

编辑:命令ls -l | grep -E -io '\b.+d.+\b'错过了一些匹配项,例如“Desktop”、“Documents”、“cd”以及所有以 d 开头的实例,例如月份 Dez(十二月),以及权限列,其中它们是目录(drwx...)

~$ ls -l
total 204
drwxrwxr-x 2 user user 4096 Fev 8 02:50 %%
-rw-rw-r-- 1 user user 1043 Fev 9 23:06 allfiles.txt
drwxrwxr-x 2 user user 4096 Fev 8 02:53 cd
drwxr-xr-x 3 user user 4096 Fev 4 16:10 Desktop
drwxr-xr-x 4 user user 4096 Fev 9 23:26 Documents
drwxr-xr-x 3 user user 4096 Fev 4 23:48 Downloads
-rw-r--r-- 1 user user 8980 Dez 14 01:07 examples.desktop
-rw-rw-r-- 1 user user 0 Fev 9 00:22 grep
-rw-rw-r-- 1 user user 5 Dez 17 01:46 hud-cli
-rw-rw-r-- 1 user user 2 Jan 27 23:43 log.txt
drwxr-xr-x 2 user user 4096 Dez 14 07:26 Music
drwxr-xr-x 2 user user 4096 Dez 14 07:26 Pictures
drwxr-xr-x 2 user user 4096 Dez 14 07:26 Public
-rw-rw-r-- 1 user user 0 Fev 3 01:02 tail
drwxr-xr-x 2 user user 4096 Dez 14 07:26 Templates
drwxr-xr-x 2 user user 4096 Dez 14 07:26 Videos
drwxrwxr-x 2 user user 4096 Jan 28 00:18 VirtualBox VMs
-rw-rw-r-- 1 user user 6 Fev 10 00:51 xargs

~$ ls -l | grep -E -io '\b[^ ]+d[^ ]+\b'
Downloads
examples.desktop
hud-cli
Videos

最佳答案

同意@melpomene,你需要,

ls -l | grep -E -io '\b[^ ]+d[^ ]+\b'

如果您想限制匹配直到有空格。

关于linux - 如何grep所有带有特定字母的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42195227/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com