使用 awk 命令去掉文字檔中的空行
linux shell awk -在處理文字檔時,有時候需要將空白行去掉。這時候,可以利用 awk
來處理。
What
- awk
-
Linux 及 Unix 環境中的一種的純文本處理工具。概念是把文字檔當作表格來處理。
How
有非空白以外的字元才處理
> awk NF <file>
awk
的簡單的語法結構為 awk [Pattern] '[{Actions}]' [Files]
,
awk
會依據 Pattern
傳回值來決定要不要處理,如果省略就表示每一行都會處理。
而如果 '{Actions}'
省略內定為 '{print $0}'
,就是印出整行文字。
沒有以 -F fs
指定欄位分隔符號時,內定是一個以上的空白(/[\s\t]+/
)來分隔欄位,NF
表示為目前該行的欄位數。
且 awk
會省略頭尾空白。
所以,上述的 awk NF
指令的意思為如果有欄位就把該行印出來。
用 javascript
來寫就約等於
for (var line in text) {
(line.trim().split(/[\s\t]+/).filter(x=>x.length).length) && console.log(line)
}
當然,上述程式碼還要加上讀檔的部分才能達到跟 awk NF
差不多的功能。
有空白字元也算
> awk /./ <file>
Pattern
可以為正規表示式,所以 awk /./
的意思為如果有任何換行符號之外的字元就把該行印出來。
去除註解
> awk '!/^\s*#/' <file>
同理,可以利用來去掉程式碼中的註解。
Pattern
最好用單引號 '
括起來,以避免 awk
無法辨識。語法結構表示為`awk 'Pattern {Actions}'`。