我有一个具有以下条目格式的文件。
$ cat mw.hosts
host23v0242 USER=wsadmin MOUNTPOINT=/web
server21v0243 USER=wsadmin MOUNTPOINT=/web
myser13v0418 USER=wladmin MOUNTPOINT=/web
whatever22v0419 USER=wladmin MOUNTPOINT=/web
....
....
我希望 grep(列出)左侧第二个整数为“3”的所有条目
因此,在上面的示例中,所需的输出是:
host23v0242 USER=wsadmin MOUNTPOINT=/web
myser13v0418 USER=wladmin MOUNTPOINT=/web
正如您所看到的,第二个整数匹配“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