到目前為止,本教程用作例子的所有資料檔案中,每條記錄都自成一行。而在下面這個名為checkbook的示例資料檔案中,記錄之間用空行分隔,同一記錄的字段之間則用換行符分隔。要處理這個檔案,就必須將記錄分隔符(rs)設為空值,而把字段分隔符(fs)設為換行符。
$ cat checkbook 1
/1/04
#125
-695.00
mortgage 1
/1/04
#126
-56.89
pg &e 1
/2/04
#127
-89.99
safeway 1
/3/04
+750.00
paycheck 1
/4/04
#128
-60.00
visa
$ cat awkchecker
begin
$ awk
-f awkchecker checkbook 1
1/1/04
#125 -695.00 mortgage21
/1/04
#126 -56.89 pg&e31
/2/04
#127 -89.99 safeway41
/3/04
+750.00 paycheck 5
1/4/04
#128 -60.00 visa 說明
1.在begin塊中,記錄分隔符(rs)被賦值為空,字段分隔符(fs)被設為換行符,輸出記錄分隔符(ors)則被設定為兩個換行符。於是,每一行都是乙個字段,且輸出記錄之間有兩個換行符將其分隔。
2.列印記錄號,後跟記錄的每個字段。
參考資料:
awk處理多行文字的記錄
awk使用內建的變數rs將輸入流拆分為乙個個記錄 record 使用fs將乙個記錄拆分為若干個域 field rs的預設值為 n,fs的預設值為空白字元。有時候會出現乙個記錄跨越多行的情況,這時就需要手動設定rs為記錄中不會出現的字元 否則會將乙個記錄拆分為兩個記錄 如空行 rs 分頁符 rs f ...
awk多行合併 next
在awk進行文字處理時候,我們可能會遇到。將多行合併到一行顯示問題。有點象sql裡面,經常遇到的行轉列的問題。這裡需要用到next語句。awk next語句使用 在迴圈逐行匹配,如果遇到next,就會跳過當前行,直接忽略下面語句。而進行下一行匹配。text.txt 內容是 ab cde chengm...
awk學習記錄
awk是乙個高效的文字處理工具。awk通過檔案或流讀取資料,然後根據指定的分隔符對資料進行切片,然後通過規則對資料進行處理,最後輸出!我們在linux上經常使用的unix awk的gun版 gawk。awk有三個基礎概念 如下資料檔案data.txt所示 姓名 上午 下午 陳二 數學 化學 張三 語...