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