簡體   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