看板 Linux 關於我們 聯絡資訊
原始文檔 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