※ 引述《NOBUNAGA01 (0.0)》之銘言:
: 標題: [問題] sed 取代問題求教
: 時間: Sat Nov 21 20:13:08 2020
:
:
: 原始文檔
: xxxxx(可忽略)
: Current Frequency:2.412 GHz (Channel 3)
:
: 要抽出後面channel的數字
: "號稱"原本可行的語法
: sed -n 's/[ \\t]*Current Frequency:.*(Channel \\([0-9]*\\))/\\1/p'
: 不過實際執行是no match
單引號 ' ' 內的反斜線不用跳脫 (escape) ,也就是不用連續兩個
這樣就會有結果了。
: 我在https://regex101.com/ 玩了一下
: 可行的抽出有兩種
: [ \\t]*Current Frequency:.*(Channel ([0-9]*))\)
: 用\2 可以抽出3
: [ \\t]*Current Frequency:.*\(Channel ([0-9]*)\)
: 用\1 就能抽出3
: 可是把上面兩個丟去GNU sed就掛了....
: https://sed.js.org/
: 輸入
: 's/[ \\t]*Current Frequency:.*\(Channel ([0-9]*)\) /\1/p'
^
後面多了一個空白。
另外 sed / grep 預設是吃 basic regular expressions ,
一般括號不用加反斜線跳脫,要做 match 用的括號才要加。
如果你覺得寫起來很煩,可以 sed / grep 加上 -E 改用 extended regex ,
規則就反過來了。當然 basic / extended 還有其他的差異,有興趣可以自己查。
: 只會吐原始字串給我...
: Current Frequency:2.412 GHz (Channel 3)
:
: 請問到底該怎麼取才對呢orz
:
: