[問題] sed 取代問題求教

作者: NOBUNAGA01 (0.0)   2020-11-21 20:13:08
原始文檔
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
作者: Gold740716 (項為之強)   2020-11-21 20:28:00
多一個反斜線 \([0-9]*\) 和 \1 就可以了有二個括號就會匹配到第二個括弧,然後也取代
作者: bitlife (BIT一生)   2020-11-21 22:10:00
以下命令不知是否是你要的結果 ( <f> 為輸入檔)grep -o -e 'Channel [0-9]*' < <f> | grep -o -e '[0-9]*'

Links booklink

Contact Us: admin [ a t ] ucptt.com