次のテキストファイルがあります。
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