- アイテム一覧
インターフェースアドレス:
abcd_Server1 CCDDomain
defg_Server1 GGFDomain
kdkhs_Server1 CCDDomain
abce_Server1 CCDDomain
dgdg_Server1 CCADomain
dfdkhs_Server1 GGFDomain
「Domain」という単語を検索してから、その単語の一意の発生回数を計算する必要があります。
CCDDomain
上記の例では3つの異なる名前(、、、GGFDomain
)CCADomain
があるため、出力は3にする必要があります。
私はこれを使ってみました:
grep -oh '*Domain' "ServerNames.txt" | sort -u | wc -l
(「-ああ」他の答えから得た)
答え1
発生回数が異なるたびに性格grep
GNUと互換性のあるドメインが含まれています。
次に区切られた単語の場合間隔数値:
<file grep -o '\S*Domain\S*' | sort | uniq -c
~のため性格一連の数字または下線で定義されます(他は区切り文字です)。
<file grep -o '\w*Domain\w*' | sort | uniq -c
答え2
\w
一致するパターンを次のパターンに簡単にラップできます。
% grep -oh "\w*Domain\w*" ServerNames.txt
CCDDomain
GGFDomain
CCDDomain
CCDDomain
CCADomain
GGFDomain
sort -u
その後、続行できますwc -l
% grep -oh '\w*Domain\w*' ServerNames.txt | sort -u | wc -l
3
答え3
grep -o '[[:alpha:]]*Domain[[:alpha:]]*' ServerNames.txt | sort | uniq | wc -l
または
grep -o '\w*Domain\w*' ServerNames.txt | sort | uniq | wc -l
[[:alpha:]]*
0個以上の文字を表します。したがって、grep
「Domain」を含む一連の文字を検索し、並べ替えと一意化のために出力します。 (-h
単一ファイルのみをgrepする必要がある場合は必要ありません。)
答え4
古いawk
方法:
$ awk '$2 ~ /Domain/ && !a[$2]++{ cnt++ }END{ print cnt }' ServerNames.txt
3
GNUの場合はcoreutils
適用できます(常にDomain
各行の2番目の列として表示される場合)。
$ uniq -f1 <(sort -k2 ServerNames.txt) | wc -l
3