Linux 三劍客之awk(二)分隔符

2021-10-09 12:48:07 字數 1764 閱讀 5976

awk的預設分割符是空格,其實awk的分隔符還分為兩種,「輸入分隔符」 和 「輸出分隔符」 。

輸入分隔符,英文原文為field separator,此處簡稱為fs

輸入分割符,預設是空白字元(即空格),awk預設以空白字元為分隔符對每一行進行分割。

輸出分割符,英文原文為output field separator,此處簡稱為ofs

awk將每行分割後,輸出在螢幕上的時候,以什麼字元作為分隔符,awk預設的輸出分割符也是空格。

輸入分隔符

輸入分隔符比較容易理解,當awk逐行處理文字的時候,以輸入分隔符為準,將文字切成多個片段,預設使用空格,但是,如果一段文字中沒有空格,我們可以指定以特定的文字或符號作為輸入分割符,比如下圖中的例子,我們指定使用"#"作為輸入分隔符。

上面使用了-f 選項,指定了使用#號作為輸入分隔符,awk將每一行都通過#號為我們分割了。

除了使用 -f 選項指定輸入分隔符,還能夠通過設定內部變數的方式,指定awk的輸入分隔符,awk內建變數fs可以用於指定輸入分隔符,但是在使用變數時,需要使用-v選項,用於指定對應的變數,比如 -v fs=』#』,如下圖

其實不管是通過-f選項,還是通過fs這個內建變數,目的都是設定指定的輸入分隔符,達到的效果是相同的,awk的語法如下

awk [options] 『pattern』 file

而-f,就是options的一種,用於指定輸入分隔符。

-v也是options的一種,用於設定變數的值。

輸出分隔符

那麼什麼是輸出分隔符呢?當awk為我們輸出每一列的時候,會使用空格隔開每一列,這個空格,就是awk的預設的輸出分隔符,下圖中紅線標註的空格部分,就是awk的預設的輸出分隔符。

輸出分割符的意思就是:當我們要對處理完的文字進行輸出的時候,以什麼文字或符號作為分隔符。

也可以使用awk的內建變數ofs來設定awk的輸出分隔符,當然,使用變數的時候要配合使用-v選項,示例如下

現在,我們可以同時指定輸入分隔符和輸出分割符了,示例如下

剛才解釋了awk的輸出分隔符,如果,在輸出的時候,我們想要讓兩列合併在一起顯示,不使用輸出分隔符分開顯示,該怎麼做呢?如下圖所示,藍線之上使用預設的輸出分隔符進行了分隔,而藍線之下的兩種方法均未使用輸出分隔符進行分隔,而是將兩列合在一起顯示了。

示例在語法上的區別就是,乙個有"逗號",乙個沒有"逗號"。

awk 『』 表示每行分割後,將第一列(第乙個字段)和第二列(第二個字段)連線在一起輸出。

awk 『』 表示每行分割後,將第一列(第乙個字段)和第二列(第二個字段)以輸出分隔符隔開後顯示。

awk的分隔符就總結到這裡,希望這篇文章能對你有所幫助。

awk linux 分隔 三劍客 awk

小拓展 找出 etc目錄下以.conf 結尾檔案複製到 tmp下面 打包備份 etc目錄到 backup 下面 保證每天備份的壓縮包名字不同 cp t 調換位置,比如第一題管道符號吧前面執行完的命令轉過來後會放在tmp後面,正在應該是在 tmp前面,所以用cp t調換一下兩者位置 awk 取行,取列...

linux 三劍客之 awk

awk是一種程式語言,用於在linux unix下對文字和資料進行處理。資料可以來自標準輸入 stdin 乙個或多個檔案,或其它命令的輸出。它支援使用者自定義函式和動態正規表示式等先進功能,是linux unix下的乙個強大程式設計工具。它在命令列中使用,但更多是作為指令碼來使用。awk有很多內建的...

linux三劍客之awk

linux三劍客 grep sed awk 與sed類似,awk是行處理器 相比較螢幕處理的優點,在處理龐大檔案時不會出現記憶體溢位或是處理緩慢的問題,它可以對每一行進行切片處理 awk處理過程 依次對每一行進行處理,然後輸出 awk命令形式 awk f f v begin end file f f...