Grep は、一致するパターンに基づいて特定の数の文字を検索します。

Grep は、一致するパターンに基づいて特定の数の文字を検索します。

次のテキストファイルがあります。

cat1-home-switch-sw131436 DNI AG3448P-R 2.1.1.1
cat1-home-switch-sw101357 DNI AG3448P-R 2.1.1.1
cat1-home-switch-sw253356 DNI AG3448P-R 2.1.1.1
cat1-home-switch-sw084146 DNI AG3448P-R 2.1.1.1
cat1-home-switch-sw041172 DNI AG3448P-R 2.1.1.1
cat1-home-switch-sw104 Accton 4610-54P 2.1.1.1
cat2-home-switch-sw102 Accton 4610-54P 2.1.1.1
cat5-home-switch-sw101 Accton 4610-54P 2.1.1.1
cat6-home-switch-sw103 Accton 4610-54P 2.1.1.1
cat5-home-switch-sw142311 DNI AG3448P-R 2.1.1.1
cat5-home-switch-sw072212 DNI AG3448P-R 2.1.1.1
cat5-home-switch-sw124376 DNI AG3448P-R 2.1.1.1
cat5-home-switch-sw143318 DNI AG3448P-R 2.1.1.1
cat5-home-switch-sw142313 DNI AG3448P-R 2.1.1.1

希望の出力

cat1-home-switch-sw104 Accton 4610-54P 2.1.1.1
cat2-home-switch-sw102 Accton 4610-54P 2.1.1.1
cat5-home-switch-sw101 Accton 4610-54P 2.1.1.1
cat6-home-switch-sw103 Accton 4610-54P 2.1.1.1

このオプションを使用してこのファイルを処理すると機能します。

awk { '印刷$ 1'} | grep -E 'sw[0-9]{3}$'

しかし、他のすべての熱も維持したいと思います。

答え1

これを使用して、\b単語の境界を一致させるか、単語の\>末尾を一致させることができます。

grep -E 'sw[0-9]{3}\b' file
grep -E 'sw[0-9]{3}\>' file

またはgrep数字の後の空白文字の場合:

grep -E 'sw[0-9]{3} ' file

答え2

次のいずれかの状況:

grep "cat.*Accton" file.txt

awk '/cat.*Accton/' file.txt

文字列を含む行Acctonが返すパターンがある唯一の行であるとします。

grep Accton file.txt

awk '/Accton/' file.txt

sw10[0-9] の後にスペースを一致させることもできます。

grep "sw10[0-9] " file.txt

awk '/sw10[0-9] /' file.txt        

出力:

cat1-home-switch-sw104 Accton 4610-54P 2.1.1.1
cat2-home-switch-sw102 Accton 4610-54P 2.1.1.1
cat5-home-switch-sw101 Accton 4610-54P 2.1.1.1
cat6-home-switch-sw103 Accton 4610-54P 2.1.1.1

答え3

/sw[0-9]{3}$/他の回答もあなたの目的に適しているかもしれませんが、行の最初のフィールドでのみ一致を保証したい場合は、次のようになりますawk

awk '$1 ~ /sw[0-9]{3}$/' input_file

関連情報