[问题] 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