プレフィックスで始まる grep 文字列

プレフィックスで始まる grep 文字列

重複せずにディレクトリ全体で使用されるアイコンのリストを表示したいと思います。たとえば、次のようになります。

<span class="icon icon-test"></span> (in test1.html)
<span class="icon icon-wrench"></span> (in wrench.html)
<span class="icon icon-test"></span> (in test3.html)

希望の出力:

test
wrench

これまで、私は次のアイデアを試しました。

grep -onr 'icon-.* "$' .

ベストアンサー1

そしてgrep -P

grep -Phro 'icon-\K[^" ]+' . | sort -u

いいえgrep -P:

grep -hro 'icon-[^" ]\+' . | cut -d- -f2 | sort -u

説明する:

  • -PBRE(基本正規表現)の代わりにPerl互換正規表現(PCRE)を使用する
  • -hファイル名を印刷しない
  • -rすべてのファイルに対して再帰的に実行
  • -o行全体ではなく一致する項目のみ出力
  • [^" ]+二重引用符やスペースではなく、1つ以上の文字と一致します。たとえば、[a-z]+名前がすべてazの小文字の場合は、これを変更できます。注:BRE数量子:をエスケープする必要があるためです\+
  • | cut -d- -f2icon-grep出力から削除されました。 (これを維持したい場合は、grepさまざまな方法がありますgrep -o '\w\+$'。)
  • | sort -u出力をソートし、重複項目を削除します。

おすすめ記事