2017-02-13 23 views
-1

いくつかの文字と一致するコマンド出力内のすべての単語を検索したいと思います。たとえば、文字dまたはDを含むすべての単語を検索したいとします。すべての単語を特定の文字でgrepするにはどうすればよいですか?

だから、ちょうど(申し訳ありませんが、色のものは、ここでは動作しません)D'sがいたところ、私が走った見るために:今

~$ 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はマッチを制限すると思った。

私が実際に[境界線またはスペース]を置くと、実際にはうんざりします。

~$ 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 

だから何が起こっているのですか?

EDIT: コマンド「ls -l | grep -E -io '\b.+d.+\b'」は、「デスクトップ」、「ドキュメント」、「cd」、およびDez(12月)の月のようなdで始まるすべてのインスタンス、および権限の列を失います。ディレクトリ(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 
+0

'\ b'(単語境界)は文字ではありません。 '[' ']'(文字クラス)に入れることはできません。 '[' ']'の中には "バックスペース"があります。 – melpomene

+0

'。+'が何を意味するか考えてみてください。 – melpomene

+0

@melpomeneは、 '。+'任意の文字と0回以上マッチしませんか? –

答えて

0

は@melpomeneに同意しているあなたはスペースがあるまで試合を制限したい場合、あなたは、

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

を必要としています。

+0

上記のEDITで説明したとおり、コマンドがうまくいかなかった。 –

+0

申し訳ありませんが、頭を混乱させました。 '+'の代わりに '*'を使うべきです。 '' -l | grep -E -io '\ b [^] * d [^] * \ b''は私が望む結果を与えます。ありがとうございます –

+0

嬉しいことに@Adriano_epifas。あなたに答えとしてあなたを助けるものを受け入れることは、SOの一般的な習慣です。 – xpt

関連する問題