概述
`awk` 的 `print` 語句用於將從輸入記錄(行)中提取的數據輸出到標準輸出。您可以按字段(列)選擇數據,組合多個字段進行輸出,並根據條件控制輸出。`print` 是 `awk` 腳本中最基本的操作之一。
主要特點
`awk print` 的主要功能如下:
- 輸出整行或特定字段
- 利用內建變量(NR、NF、FS、RS 等)
- 輸出字符串和字段的組合
- 支持條件輸出
- 預設情況下,每次輸出後添加換行符
使用範例
使用 `awk` 的 `print` 語句的各種範例。假設範例文件 `data.txt` 內容如下: `apple 10 red banana 20 yellow orange 15 orange`
輸出整行
awk '{print}' data.txt
原樣輸出輸入文件的所有行。
輸出第一個字段
awk '{print $1}' data.txt
僅輸出每行的第一個字段($1)。
輸出多個字段和字符串的組合
awk '{print "Item:", $1, "Color:", $3}' data.txt
輸出第一個字段和第三個字段,並用逗號分隔,同時添加自定義字符串。
滿足特定條件時輸出
awk '$2 > 15 {print}' data.txt
僅輸出第二個字段($2)值大於 15 的行。
輸出最後一個字段
awk '{print $NF}' data.txt
輸出每行的最後一個字段($NF)。NF 是表示當前行總字段數的內建變量。
更改字段分隔符後輸出
echo "fruit,100,red\nbanana,200,yellow" | awk -F',' '{print $1, $2}'
將輸入字段分隔符(-F)指定為逗號(,),然後輸出第一個字段和第二個字段。(範例文件:`fruit,100,red\nbanana,200,yellow`)
提示與注意事項
為了更有效地使用 `awk print` 而提供的提示和注意事項。
性能和使用技巧
- 使用 `printf` 替代 `print`:`printf` 類似於 C 語言的 `printf`,可以精確控制格式。`print` 預設會在每個參數之間插入 OFS(輸出字段分隔符)和 OSR(輸出記錄分隔符,預設為換行符),而 `printf` 需要用戶手動指定格式。
- 明確指定字段分隔符(`-F`):如果輸入文件的字段分隔符不是空格,則應使用 `-F` 選項確保正確的字段分隔。
- 將複雜邏輯管理為 `awk` 腳本文件:如果腳本變長,建議使用 `awk -f script.awk data.txt` 的形式將其管理為單獨的文件,以提高可讀性和可維護性。
- 利用內建變量:利用 `awk` 強大的內建變量,如 `NR`(當前記錄編號)、`NF`(當前記錄的字段數)、`FS`(輸入字段分隔符)、`RS`(輸入記錄分隔符)等,可以實現更靈活的處理。