检查文件中一行的第二个整数是否匹配

检查文件中一行的第二个整数是否匹配

我有一个具有以下条目格式的文件。

$ 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

相关内容