Sed 表达式仅转换以某些示例短语开头的某些行
Sed expression to convert only certain lines starting with some example phrase
有一个包含常规文本的示例文件。在文档的某些地方混合了以下几行:
|  |  |  |
|  |  |
有以下 sed 表达式将行转换为所需的形式:
sed 's#\([^[]*.\)\([^\.]*.\([^\.]*\)[^)]*.\)##g'
如何将此 sed 表达式仅应用于那些以 | \(]([^().]*\.\([^|.]*\)\.[^()]*)\)##g'
参见 online demo。
此处,POSIX BRE 模式匹配
/^|[[:space:]]!\[](/
- 任何以 |
空格开头的行,然后是 \(]([^().]*\.\([^|.]*\)\.[^()]*)\)##g
-
\(|[[:space:]]!\[\)
- 第 1 组 (</code>):<code>|
,一个空格,.]*\.
- 第 2 组开始:](
,然后是 (
、)
和 .
以外的任何零个或多个字符,然后是 .
(注意它被转义了)
\([^|.]*\)
- 第 3 组 (</code>):除 <code>|
和 .
之外的任何零个或多个字符
\.[^()]*)\)
-(仍然是第 2 组):.
字符,然后是 (
和 )
以外的零个或多个字符,然后是 )
字符
替换是组 1、3 和 2 的串联。
有一个包含常规文本的示例文件。在文档的某些地方混合了以下几行:
|  |  |  |
|  |  |
有以下 sed 表达式将行转换为所需的形式:
sed 's#\([^[]*.\)\([^\.]*.\([^\.]*\)[^)]*.\)##g'
如何将此 sed 表达式仅应用于那些以 | \(]([^().]*\.\([^|.]*\)\.[^()]*)\)##g'
参见 online demo。
此处,POSIX BRE 模式匹配
/^|[[:space:]]!\[](/
- 任何以|
空格开头的行,然后是\(]([^().]*\.\([^|.]*\)\.[^()]*)\)##g
-\(|[[:space:]]!\[\)
- 第 1 组 (</code>):<code>|
,一个空格,.]*\.
- 第 2 组开始:](
,然后是(
、)
和.
以外的任何零个或多个字符,然后是.
(注意它被转义了)\([^|.]*\)
- 第 3 组 (</code>):除 <code>|
和.
之外的任何零个或多个字符
\.[^()]*)\)
-(仍然是第 2 组):.
字符,然后是(
和)
以外的零个或多个字符,然后是)
字符
替换是组 1、3 和 2 的串联。