sed 取代問題求教 - Linux

Table of Contents


原始文檔
xxxxx(可忽略)
Current Frequency:2.412 GHz (Channel 3)

要抽出後面channel的數字
"號稱"原本可行的語法
sed -n 's/[ \\t]*Current Frequency:.*(Channel \\([0-9]*\\))/\\1/p'
不過實際執行是no match

我在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'
只會吐原始字串給我...
Current Frequency:2.412 GHz (Channel 3)

請問到底該怎麼取才對呢orz

--

All Comments

William avatarWilliam2020-11-23
多一個反斜線 \([0-9]*\) 和 \1 就可以了
Xanthe avatarXanthe2020-11-25
有二個括號就會匹配到第二個括弧,然後也取代
Dora avatarDora2020-11-26
以下命令不知是否是你要的結果 ( <f> 為輸入檔)
Daniel avatarDaniel2020-11-28
grep -o -e 'Channel [0-9]*' < <f> | grep -o -e '[0-9]
*'