Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sed:更改词序并替换_Sed - Fatal编程技术网

sed:更改词序并替换

sed:更改词序并替换,sed,Sed,我正试图取代 randomtext{{XX icon}} 借 …在文件中,其中XX可以是2或3个小写字母的任意序列 我尝试用awk重新排列单词顺序,然后用sed替换“icon”和“ref-” awk '{print $2, $1}' …但由于第一个单词之前和第二个单词之后都没有空格,所以它弄乱了花括号 icon}} {{XX 使用sed实现这一点的最简单方法是什么 sed 's/{{\([a-z]\{2,3\}\)\sicon/{{ref-\1/' 这一行程序使用替换命令s/PAT

我正试图取代

randomtext{{XX icon}}

…在文件中,其中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”。然后我们用文本字符串
{{ref-
和捕获的2个或3个字母的单词。

这里有一个更通用的版本,使用哈希标记(
)作为正则表达式分隔符:

sed 's#{{\([^ ]*\) [^}]*#{{ref-\1#'
  • {{
    将正则表达式锚定在双大括号处
  • \([^]*\)
    捕获空间之前的所有内容
  • [^}]*
    吃掉所有东西,直到最后一个大括号
sed 's#{{\([^ ]*\) [^}]*#{{ref-\1#'