![检查文件中一行的第二个整数是否匹配](https://linux22.com/image/192668/%E6%A3%80%E6%9F%A5%E6%96%87%E4%BB%B6%E4%B8%AD%E4%B8%80%E8%A1%8C%E7%9A%84%E7%AC%AC%E4%BA%8C%E4%B8%AA%E6%95%B4%E6%95%B0%E6%98%AF%E5%90%A6%E5%8C%B9%E9%85%8D.png)
我有一个具有以下条目格式的文件。
$ 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