Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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
Regex 匹配字符串加上任何非空白字符并插入空白_Regex_String_Replace_Sed - Fatal编程技术网

Regex 匹配字符串加上任何非空白字符并插入空白

Regex 匹配字符串加上任何非空白字符并插入空白,regex,string,replace,sed,Regex,String,Replace,Sed,我正在尝试匹配和替换许多文件中的字符串 要搜索的字符串: </ANON>[any non-whitespace char], e.g. "</ANON>." or "</ANON>)" [任何非空白字符],例如“,”或“,” 我想在标记和非空白字符之间加一个空格 我曾尝试使用sed这样的方法: sed -i -e 's/<\/ANON>/S/<\/ANON> /S/g' sed-i-e's//s//s/g' 但是,唉,这是行不通

我正在尝试匹配和替换许多文件中的字符串

要搜索的字符串:

</ANON>[any non-whitespace char], e.g. "</ANON>." or "</ANON>)"
[任何非空白字符],例如“,”或“,”
我想在标记和非空白字符之间加一个空格

我曾尝试使用sed这样的方法:

sed -i -e 's/<\/ANON>/S/<\/ANON> /S/g'
sed-i-e's//s//s/g'
但是,唉,这是行不通的

非常感谢您的帮助。

请尝试以下方法:

sed -i -e 's|\(</ANON>\)\([^[:space:]]\)|\1 \2|g' file
sed-i-e的|\(\)\([^[:space:]\)\1\2 | g'文件
它不是Perl,不能对非空白字符使用\s。您还应该捕获组并在替换零件中使用它们。另外,您不能使用/S,因为1)sed使用斜线分隔带图案、替换和标志的零件是错误的2)斜线

另外,如果您愿意,也可以使用Perl:

perl -p -i -e 's|(</ANON>)(\S)|$1 $2|g' file
perl-p-i-e的|()(\s)|$1$2 | g'文件

您想要的输出是什么?使用\s而不是/s来表示非空格字符,与输入相同,在标记和非空格字符之间有一个空格。这似乎起到了作用,除了一堆。,)好吧,我不知道为什么,但是运行perl命令几次最终都能捕获所有的数据。非常感谢,伙计。可能是因为你在一行中有多个图案。要替换所有这些,只需添加
g
modifier(我已经更新了答案)