Shell-Script

檢查文件中一行的第二個整數是否匹配

  • July 8, 2021

我有一個具有以下條目格式的文件。

$ 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”。

你能建議嗎?

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.

您也可以為此使用 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

引用自:https://unix.stackexchange.com/questions/657216