2

以下のデータをキャプチャするために grep を使用しようとしています。

"\\.xy$"
"\\.ab$"
"\\.ef\\.hi$"

私は持っている

grep -Eo "((\\\\\.[a-zA-Z]+)){1,2}\\$" ファイル

2 つの問題:

  1. \\.xy$ のようなものはキャプチャできますが、\\.xy\\.ef$ はキャプチャできません
  2. 返された結果の末尾にリテラル $ が含まれているのはなぜですか?
4

2 に答える 2

2

ドルの前にバックスラッシュを 1つ付けます。

% grep -Eo '"(\\\\\.[[:alpha:]]+){1,2}\$"' input
"\\.xy$"
"\\.ab$"
"\\.ef\\.hi$"

または、特殊文字を角かっこに入れると、読みやすくなります。

% grep -Eo '"([\]{2}[.][[:alpha:]]+)+"' input 
"\\.xy$"
"\\.ab$"
"\\.ef\\.hi$"
于 2011-06-13T02:11:32.037 に答える
0

$ をダブルエスケープしました - これを試してください:

grep  -Eo '"((\\\\\.[a-zA-Z]+)){1,2}\$"' file
于 2011-06-13T02:12:09.573 に答える