我需要获取字符串中两个单词或文本段之间的文本。
我已经用 sed 搜索并尝试了 EVERTYHING,但无法让它工作:S
我有一个像“aaa bbb ccc ddd eee”这样的字符串,我想提取 bbb 和 ddd 之间的文本。
我需要获取字符串中两个单词或文本段之间的文本。
我已经用 sed 搜索并尝试了 EVERTYHING,但无法让它工作:S
我有一个像“aaa bbb ccc ddd eee”这样的字符串,我想提取 bbb 和 ddd 之间的文本。
假设bbb
在您感兴趣的文本和反向约束之后没有发生ddd
,您可以这样做:
sed 's/^.*bbb //; s/ddd.*$//' <<< "aaa bbb ccc ddd eee"
输出:
ccc
sed
可能不是最好的工具,也许你可以解释一下你想要做什么?例如,您可能希望使用积极的后视和前瞻:
grep -oP '(?<=bbb ).*?(?=ddd)' <<< "aaa bbb ccc ddd eee"
输出:
ccc
根据评论,OP 想要从中提取 IP 地址checkip.dyndns.org
。一种通用且更便携的方法是使用grep -o
,例如:
curl -s http://checkip.dyndns.org/ | grep -oE '([0-9]+.){3}[0-9]+'
您可以使用 sed 分组。三对括号表示三个分组。输出端的\2是第二组的内容
sed 's/\(^.*bbb\)\(.*\)\(ddd.*$\)/\2/'
假设您不希望 bbb 和 ddd 之间的输出文本周围有空格
sed 's|^\(.*bbb *\)\(.*\)\( *ddd.*\)$|\2|g'