次のエントリ形式のファイルがあります。
$ cat mw.hosts
host23v0242 USER=wsadmin MOUNTPOINT=/web
server21v0243 USER=wsadmin MOUNTPOINT=/web
myser13v0418 USER=wladmin MOUNTPOINT=/web
whatever22v0419 USER=wladmin MOUNTPOINT=/web
....
....
左から2番目の整数が"3"であるすべての項目をgrep(ナ列)したいと思います。
したがって、上記の例では、望ましい出力は次のようになります。
host23v0242 USER=wsadmin MOUNTPOINT=/web
myser13v0418 USER=wladmin MOUNTPOINT=/web
ご覧のとおり、2番目の整数は「3」と一致します。
何か提案してもらえますか?
答え1
grep '^[^0-9]*[0-9]3' mw.hosts
または
grep '^[^[:digit:]]*[[:digit:]]3' mw.hosts
または(GNU準拠のPerl正規表現を使用grep -P
):
grep -P '^\D*\d3' mw.hosts
これらのすべては、ゼロ以上の数字以外の文字で始まり、その後に数字、続くすべての行と一致します3
。
答え2
この目的のためにawkを使用することもできます。
awk '/[0-9]3v/ { print }' mw.hosts
awk '/[0-9]3v/ { print }' mw.hosts
host23v0242 USER=wsadmin MOUNTPOINT=/web
myser13v0418 USER=wladmin MOUNTPOINT=/web