sed
^
如果模式空间包含嵌入的换行符$
,例如在使用氮命令?
它们是否仍应匹配模式空间的开头和结尾,或者是否应匹配包含多行的任何行的开头和结尾?
GNUsed
的^
和$
仍然只匹配整个模式空间的开头和结尾。
答案1
任何sed
使用布雷也会这样做。在使用N
命令的情况下,sed
将多行视为模式空间中的一条长线,每行真实的\n
由嵌入的换行符(文字\
和)分隔的行n
。
确认:
printf '1\n2\n' | sed '1N;/2$/d'
什么也不输出。和:
printf '1\n2\n' | sed '1N;/1$/d'
给你:
1
2
或者使用l
ook 命令来获得更详细的信息:
$ 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