有關awk欄位分隔符

2021-09-30 09:03:07 字數 842 閱讀 7284

echo a b c d |awk 』』

我的理解是應該把輸出顯示為如下的方式

a:b:c:d

dan但執行的結果不是這樣的

a b c d

為什麼啊

echo a b c d|awk 』』

或echo a b c d|awk 』begin 』

或echo a b c d|awk 』』

這個方法我知道

我是想知道為什麼ofs沒起作用

奇怪的是我改動其中乙個欄位的值確能顯示分隔符

echo a b c d |awk 』』

a:3:c:d

原來如此,謝謝

原來如此,是什麼原因啊?

echo a b c d |awk 』』

錯誤就在這裡,$0是列印這條記錄,ofs對他不起作用

echo a b c d|awk 』』 這樣就對了

下面引用由twlogin在 2002/09/28 01:50pm 發表的內容:

奇怪的是我改動其中乙個欄位的值確能顯示分隔符

echo a b c d |awk 』』

...那改動其中乙個欄位的值

如echo a b c d |awk 』』

結果又對了,why?

是不是改動其中乙個欄位的值後,每個欄位的會自動加上ofs

只能說awk對於ofs的改動後,中間沒有提供他所有加工輸出資料的機會,那ofs的改動也失效了.

awk也是個常人寫得程式.總有不周之處啊.

在《sed和awk程式設計篇》中有這樣一句:

如果給字段變數賦乙個新值,那麼awk會自動地使用內部變數ofs重新生成$0

該書中講解了 $0 什麼被重新生成的例子

二,awk分隔符

在前一篇文章中我們略微提到過 分隔符 但是並沒有細說,那麼我們今天就聊聊什麼是分隔符,awk有哪些分隔符,awk的預設分割符是空格,但是,這樣描述並不精確,因為,awk的分隔符還分為兩種,輸入分隔符 和 輸出分隔符 此處我們先將分隔符的概念列出,看不懂沒關係,我們會一一進行舉例,到時自然會明白。輸入...

awk linux 分隔 awk多分隔符

awk的 f引數可以指定新的分隔符,有些時候可能需求指定多個分隔符,比如下面的內容 root n1 netstat an grep estab udp 0 0 192.168.1.120 35570 212.47.249.141 123 established udp 0 0 192.168.1.1...

字段分隔符IFS

ifs internal field seperator 在linux的shell中預設的分隔符,用來把command line分解成word 字段 ifs可以是white space 空白鍵 tab 鍵 enter 回車鍵 中的乙個或幾個。ifs是shell指令碼中的乙個重要概念,在處理文字資料時...