【发布时间】:2022-07-25 18:06:29
【问题描述】:
我可以在字符串中提取端口号:
s="2017-04-17 08:16:14 INFO connecting lh3.googleusercontent.com:443 from 111.111.111.111:26215"
echo $s | sed 's/\(.*\):\(\d*\)/\2/'
26215
几乎相同的知识,我想在字符串中提取“#”后面的数字:
s="alsa_output.pci-0000_09_00.6.analog-stereo.monitor/#4"
echo $s | sed 's/\#\([0-9]\)/\1/'
alsa_output.pci-0000_09_00.6.analog-stereo.monitor/4
echo $s | sed 's/#\([0-9]\)/\1/'
alsa_output.pci-0000_09_00.6.analog-stereo.monitor/4
为什么输出不是数字“4”?
【问题讨论】:
-
你需要用
.*消费整行(很多情况下,右边还需要.*)。sed的主要内容(当您需要保留一行的一部分时)是匹配将替换为捕获值的整行。