簡體   English   中英

AWK記錄分隔符設置為空行不起作用

[英]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 20070501gawkmawk ,前提是輸入文件的末尾有換行符('\\ n')(而不是CR LF)。

(2)如果輸入是DOS文本文件,則結果如OP所述。

另外,如果輸入文件是DOS文本文件,則dos2unix的替代方法是使用tr如下所示:

$ tr -d '\r' < input.dos.txt | awk ....

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM