use*_*102 5 sed text-processing posix regular-expression
如果模式空间包含嵌入的换行符,例如在使用N命令之后,在正则表达式的开头和结尾使用sed ^和$锚点的 POSIX 行为是什么?
它们应该仍然匹配模式空间的开头和结尾,还是应该匹配包含多行的任何行的开头和结尾?
GNUsed的^and$仍然只匹配整个模式空间的开头和结尾。
任何sed使用BRE的人都会这样做。在使用命令的情况下N,sed将多行视为模式空间中的一长行,每行由嵌入的换行符\n(文字\和)分隔n。
确认:
printf '1\n2\n' | sed '1N;/2$/d'
Run Code Online (Sandbox Code Playgroud)
什么也不输出。和:
printf '1\n2\n' | sed '1N;/1$/d'
Run Code Online (Sandbox Code Playgroud)
给你:
1
2
Run Code Online (Sandbox Code Playgroud)
或者使用look 命令来获得更详细的信息:
$ printf '1\n2\n' | sed 1N\;l
1\n2$
1
2
$ printf '1\n2\n' | sed 1N\;l | od -t a
0000000 1 \ n 2 $ nl 1 nl 2 nl
0000012
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2270 次 |
| 最近记录: |