繁体   English   中英

在有条件的awk / sed中使用正则表达式吗?

[英]Using a regex in a conditional vs. an outright awk/sed?

我有一行:

03:1b.0 USB Controller: Intel... (lspci -k output) 

我正在尝试使用正则表达式来检查输入行的第一个字段是否遵循形式??:??。?,但不确定如何实现它。 我想出了表达:

([0-9])\w+:([0-9])\w+.([0-9])

使用RegExr,但是我不确定如何将其添加到我的代码中。 最好将其添加到有条件的环境中,或者直接使用awk / sed? 我试着做

if [[ $input =~ /([0-9])\w+:([0-9])\w+.([0-9])/g ]]; then...

但这没有用,也没有引发错误。 我不确定如何在awk / sed中使用此表达式。 假设在表达式中每个部分的第一个数字为[0-9],这很好。

谢谢你的帮助!

编辑:在某些情况下该窗体不存在。 让输入为:

Classes: Audio Video
Drivers: snd-usb-audio uvcvideo

00:03.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller (rev 06)
    Subsystem: Gigabyte Technology Co., Ltd Device 5000
    Kernel driver in use: snd_hda_intel

使用sed可以使用此正则表达式:

s='03:1b.0 USB Controller: Intel... (lspci -k output)'
grep -E '^[0-9]\w:[0-9]\w\.[0-9]' <<< "$s"
03:1b.0 USB Controller: Intel... (lspci -k output)

那这个呢? / tmp /下面的

03:1b.0 USB Controller: Intel... (lspci -k output)
03:kb.0 USB Controller: Intel... (lspci -k output)
03:1b.1 USB Controller: Intel... (lspci -k output)
10:1b.1 USB Controller: Intel... (lspci -k output)


gawk '/^[0-9][0-9]:[0-9][a-z].[0-9]/' /tmp/line

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM