[問題] sed 取代問題求教

看板Linux作者 (0.0)時間4年前 (2020/11/21 20:13), 4年前編輯推噓3(302)
留言5則, 2人參與, 4年前最新討論串1/2 (看更多)
原始文檔 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

11/21 20:28, 4年前 , 1F
多一個反斜線 \([0-9]*\) 和 \1 就可以了
11/21 20:28, 1F
試出來這樣可以 但是反而看不懂了啊... 's/[ \\t]*Current Frequency:.*Channel \([0-9]*\))/\1/p' 如果只有一個右括弧的話得到結果是 3) 為什麼多一個右括弧就會把結果的右括弧削掉.... ※ 編輯: NOBUNAGA01 (111.243.105.139 臺灣), 11/21/2020 21:17:18

11/21 21:34, 4年前 , 2F
有二個括號就會匹配到第二個括弧,然後也取代
11/21 21:34, 2F

11/21 22:10, 4年前 , 3F
以下命令不知是否是你要的結果 ( <f> 為輸入檔)
11/21 22:10, 3F

11/21 22:11, 4年前 , 4F
grep -o -e 'Channel [0-9]*' < <f> | grep -o -e '[0-9]
11/21 22:11, 4F

11/21 22:11, 4年前 , 5F
*'
11/21 22:11, 5F
文章代碼(AID): #1VkGHN1V (Linux)
討論串 (同標題文章)
文章代碼(AID): #1VkGHN1V (Linux)