作者NOBUNAGA01 (0.0)
看板Linux
標題[問題] 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
我在
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
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.243.105.139 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1605960791.A.05F.html
推 Gold740716: 多一個反斜線 \([0-9]*\) 和 \1 就可以了 11/21 20:28
試出來這樣可以 但是反而看不懂了啊...
's/[ \\t]*Current Frequency:.*Channel \([0-9]*\))/\1/p'
如果只有一個右括弧的話得到結果是 3)
為什麼多一個右括弧就會把結果的右括弧削掉....
※ 編輯: NOBUNAGA01 (111.243.105.139 臺灣), 11/21/2020 21:17:18
推 Gold740716: 有二個括號就會匹配到第二個括弧,然後也取代 11/21 21:34
推 bitlife: 以下命令不知是否是你要的結果 ( <f> 為輸入檔) 11/21 22:10
→ bitlife: grep -o -e 'Channel [0-9]*' < <f> | grep -o -e '[0-9] 11/21 22:11
→ bitlife: *' 11/21 22:11