The Issue of the Day Before

使用 awk 命令去掉文字檔中的空行

linux -

在處理文字檔時,有時候需要將空白行去掉。這時候,可以利用 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}'`。

閱讀在雲端