我正在尝试替换;
randomtext{{XX icon}}
经过
randomtext{{ref-XX}}
..在一个文件中,其中 XX 可以是 2 或 3 个小写字母的任意序列。
我尝试用 awk 重新排列词序,然后用 sed 将“icon”替换为“ref-”;
awk '{print $2, $1}'
..但是由于第一个单词之前和第二个单词之后都没有空格,所以它弄乱了大括号;
icon}} {{XX
使用 sed 实现这一目标的最简单方法是什么?
我正在尝试替换;
randomtext{{XX icon}}
经过
randomtext{{ref-XX}}
..在一个文件中,其中 XX 可以是 2 或 3 个小写字母的任意序列。
我尝试用 awk 重新排列词序,然后用 sed 将“icon”替换为“ref-”;
awk '{print $2, $1}'
..但是由于第一个单词之前和第二个单词之后都没有空格,所以它弄乱了大括号;
icon}} {{XX
使用 sed 实现这一目标的最简单方法是什么?
sed 's/{{\([a-z]\{2,3\}\)\sicon/{{ref-\1/'
这一班轮使用替代命令s/PATTERN/REPLACE/
。{{
匹配两个括号。\([a-z]\{2,3\}\)
捕获匹配 2 个或 3 个小写字母的模式。\s
匹配一个空白。icon
匹配文字字符串“icon”。然后我们替换匹配,即{{....icon
用文字字符串{{ref-
和捕获的 2 或 3 个字母的单词。
#
这是一个使用哈希标签 ( ) 作为正则表达式分隔符的更通用的版本:
sed 's#{{\([^ ]*\) [^}]*#{{ref-\1#'
{{
将正则表达式锚定在双开花括号上。\([^ ]*\)
捕获所有内容,直到一个空间。[^}]*
吃完所有东西,直到结束花括号。