替换 sed 中的 "advanced" 模式
Replace "advanced" pattern in sed
我不知道怎么改:
\usepackage{scrpage2}
\usepackage{pgf} \usepackage[latin1]{inputenc}\usepackage{times}\usepackage[T1]{fontenc}
\usepackage[colorlinks,citecolor=black,filecolor=black,linkcolor=black,urlcolor=black]{hyperref}
仅使用 sed
REPLACED
REPLACED REPLACEDREPLACEDREPLACED
REPLACED
我正在尝试 sed 's!\.*\([.*]\)\?{.\+}!REPLACED!g' FILE
但这给了我
REPLACED
REPLACED
REPLACED
我认为 .* 被使用了,而我的模式中的其他所有内容都被忽略了,但我不知道该怎么做。
在我学会了如何格式化正则表达式之后,我的下一步是将其更改为:
\usepackage{scrpage2}
\usepackage{pgf}
\usepackage[latin1]{inputenc}
\usepackage{times}
\usepackage[T1]{fontenc}
\usepackage[colorlinks,citecolor=black,filecolor=black,linkcolor=black,urlcolor=black]{hyperref}
所以我也很感激这方面的任何指示。
这里有一些代码恰好适用于您给出的示例:
sed 's/\[^\[:space:]]\+/REPLACED/g'
即匹配一个反斜杠后跟一个或多个不是空格或另一个反斜杠的字符。
为了使事情更具体,您可以使用
sed 's/\[[:alnum:]]\+\(\[[^][]*\]\)\?{[^{}]*}/REPLACED/g'
即匹配反斜杠后跟一个或多个字母数字字符,然后是可选的 [ ]
组,然后是 { }
组。
[ ]
组匹配 [
,后跟零个或多个 non-bracket 个字符,后跟 ]
.
{ }
组匹配 {
,后跟零个或多个 non-brace 个字符,后跟 }
.
Perl 助你一臂之力!它具有 "frugal quantifiers":
perl -pe 's!\.*?\.?{.+?}!REPLACED!g' FILE
请注意,我删除了捕获组,因为您没有在任何地方使用它。此外,[.*]
匹配一个点或一个星号,但您可能想匹配一个文字点。
我不知道怎么改:
\usepackage{scrpage2}
\usepackage{pgf} \usepackage[latin1]{inputenc}\usepackage{times}\usepackage[T1]{fontenc}
\usepackage[colorlinks,citecolor=black,filecolor=black,linkcolor=black,urlcolor=black]{hyperref}
仅使用 sed
REPLACED
REPLACED REPLACEDREPLACEDREPLACED
REPLACED
我正在尝试 sed 's!\.*\([.*]\)\?{.\+}!REPLACED!g' FILE
但这给了我
REPLACED
REPLACED
REPLACED
我认为 .* 被使用了,而我的模式中的其他所有内容都被忽略了,但我不知道该怎么做。
在我学会了如何格式化正则表达式之后,我的下一步是将其更改为:
\usepackage{scrpage2}
\usepackage{pgf}
\usepackage[latin1]{inputenc}
\usepackage{times}
\usepackage[T1]{fontenc}
\usepackage[colorlinks,citecolor=black,filecolor=black,linkcolor=black,urlcolor=black]{hyperref}
所以我也很感激这方面的任何指示。
这里有一些代码恰好适用于您给出的示例:
sed 's/\[^\[:space:]]\+/REPLACED/g'
即匹配一个反斜杠后跟一个或多个不是空格或另一个反斜杠的字符。
为了使事情更具体,您可以使用
sed 's/\[[:alnum:]]\+\(\[[^][]*\]\)\?{[^{}]*}/REPLACED/g'
即匹配反斜杠后跟一个或多个字母数字字符,然后是可选的 [ ]
组,然后是 { }
组。
[ ]
组匹配 [
,后跟零个或多个 non-bracket 个字符,后跟 ]
.
{ }
组匹配 {
,后跟零个或多个 non-brace 个字符,后跟 }
.
Perl 助你一臂之力!它具有 "frugal quantifiers":
perl -pe 's!\.*?\.?{.+?}!REPLACED!g' FILE
请注意,我删除了捕获组,因为您没有在任何地方使用它。此外,[.*]
匹配一个点或一个星号,但您可能想匹配一个文字点。