我有一个包含 Unix (LF) 和 Windows (CR/LF) 样式换行符的输入文件。(具体来说,它是来自 Linux 系统的 XML,但它包含一些原始 HTTP 标头,HTTP 更喜欢 CRLF 作为标头):
<response_page cause="default">
<response_type>custom</response_type>
<response_header>HTTP/1.1 200 OK^M
Cache-Control: no-cache^M
Pragma: no-cache^M
Connection: close</response_header>
Run Code Online (Sandbox Code Playgroud)
我正在编写一个 gawk 脚本来通过这个文件对 XML* 进行一些简单的调整,唯一的问题是它读取 LF 和 CRLF 有效 RS 但只输出 LF,而不管那里有什么......本质上,它会去除 CR。
我尝试了各种方法,最雄心勃勃的是 RS 的正则表达式匹配和打印 RT:
BEGIN { RS = "\r\n|\n"; go = "no" }
(go ~ /yes/) {
sub(/false/, "true", $0)
go = "no"
}
($0 ~ /<signature signature_id="200000017">/) {
print "Found signature!"
go = "yes"
}
{
printf $0 RT …
Run Code Online (Sandbox Code Playgroud)