[英]AWK record separator set to empty line not working
我正在嘗試編寫一個簡單的AWK腳本,該腳本使用空行作為記錄分隔符。 我在PC上復制了GNU AWK手冊“ 多行記錄”中的示例。 我復制以下代碼:
# addrs.awk --- simple mailing list program
# Records are separated by blank lines.
# Each line is one field.
BEGIN { RS = "" ; FS = "\n" }
{
print "Name is:", $1
print "Address is:", $2
print "City and State are:", $3
print ""
}
輸入為:
Jane Doe
123 Main Street
Anywhere, SE 12345-6789
John Smith
456 Tree-lined Avenue
Smallville, MW 98765-4321
文件是在UNIX系統上創建的。
所需的輸出是:
Name is: Jane Doe
Address is: 123 Main Street
City and State are: Anywhere, SE 12345-6789
Name is: John Smith
Address is: 456 Tree-lined Avenue
City and State are: Smallville, MW 98765-4321
相反,我得到的結果與預期的結果不同。 我得到的是:
Name is: Jane Doe
Address is: 123 Main Street
City and State are: Anywhere, SE 12345-6789
有人知道我為什么得到錯誤的結果嗎? AWK僅找到1條記錄,而不是2條,您知道為什么嗎?
這是為了確認:
(1)給定的程序可以使用awk version 20070501
, gawk
或mawk
,前提是輸入文件的末尾有換行符('\\ n')(而不是CR LF)。
(2)如果輸入是DOS文本文件,則結果如OP所述。
另外,如果輸入文件是DOS文本文件,則dos2unix
的替代方法是使用tr
如下所示:
$ tr -d '\r' < input.dos.txt | awk ....
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.