awk行距,行號和計算

2021-04-22 14:48:59 字數 2358 閱讀 4039

一. 行距:

1. 每行間加乙個空行

awk

'1; '   filname.ext             #輸出當前行,在輸出乙個空行

awk

'1 '   filname.ext   

awk

' '   filname.ext

2. 1的另外一種實現方法:

awk

'begin ; 1'   filname.ext    #預先設定每一行的分隔符號為兩個換行;你可以嘗試把ors設定為其他的看看效果如何

3. 僅輸出非空行,並每行間在加乙個空行

awk

'nf '   filname.ext       #nf表示當前行的字段數,$0表示當前行,最後再加乙個換行

4. 雙倍行距;沒行間兩個空行

awk

'1; '   filname.ext     #預設輸出後會換行的,輸出/n,則會輸出兩個空白行

等同於:

awk

''   filname.ext

二. 行號和計算

5. 顯示當前行在所在檔案中的行號

awk

''   filname.ext      #fnr,表示當前行在檔案中的行號

6. 顯示當前行在本次處理過程中的行號

awk

''   filname.ext       #nr,表示當前行在本次處理過程中的行號

小疑問:為啥有fnr和nr的差別呢?效果不都是一樣麼? 如果你給如:filname1.ext filname2.ext,你就會看到差別了。原來:fnr,是每個檔案中的,換了乙個檔案,會歸零;而nr則每個檔案會累加起來的

7. 使用簡單樣式來輸出

awk

''   filname.ext    #行號占用5位,不足補空格

8. 顯示非空行

awk

'nf ; '   filname.ext    #nf前面說了,表示當前行的行號,此處用他作為條件,如果是空行,則nf為0,跳過;否則,用動態變數a儲存非空行的數目

9. 計算行數:效果類似wc -l

awk

'end '   filname.ext    #end表示每行都處理完了後,在執行,此時nr就是最後一行的行號,也就是總的行數了。

10. 計算每一行的和

awk

''   filname.ext

#s用作每行和的累加,從1到nf(每行總的字段數),依次累加

11.  計算檔案中所有欄位的和

awk

'; end '   filname.ext

#s用作總和的累加,每行都處理完成了,再輸出s;注意和10對比,此處沒有每行清零,所以累加了。沒有設定的變數,預設為空,但是會根據上下文數值計算情況自動變為0

12. 將每個欄位用其絕對值代替

awk

''   filname.ext

#$i表示當前行中的字段,$0表示當前行,可以改變$i的值

13. 計算檔案中總的字段和(例如計算單詞數)

awk

'; end '   filname.ext

14. 計算匹配指定資訊的總行數

awk

'/linux/ ; end '   filname.ext

15. 找到檔案中每行第乙個欄位中,最大的數,以及其所在的行

awk

'$1 > max ; end '   filname.ext

#用max儲存最大的數,maxline儲存最大數所在的行,並在最後輸出

16. 顯示當前行的字段數,並輸出當前行

awk

' '   filname.ext

17. 顯示每行最後乙個欄位的內容

awk

''   filname.ext    #nf表示當前行的字段數,例如為3,則$nf,就是$3,也就是第三個欄位了

18. 顯示最後一行的最後乙個字段

awk

'; end '   filname.ext

#每行處理沒有輸出,盡在最後輸出,field作為每行的最後一行的暫存變數

19. 顯示字段數小於4的行

awk

'nf < 4'   filname.ext    #{}以外的內容,作為條件,沒有{},則預設輸出當前行

20. 顯示每行的最後乙個字段小於4的行

awk

'$nf < 4'   filname.ext    #注意和19對比

awk行號相關的操作

awk行號相關的操作,個人認為寫的非常好 一.行距 1.每行間加乙個空行 1 awk 1 filname.ext 輸出當前行,在輸出乙個空行 2 awk 1 filname.ext 3 awk filname.ext 2.1的另外一種實現方法 1 awk begin 1 filname.ext 預先...

行距和對齊方式

最早埃及有象形文本,蘇美爾有楔形文字,都不是拼音文字,但埃及的象形文本肯定不是語言的記錄,只是它們都湮滅了。說文字是記錄語言的符號,還有乙個原因,就是現在還有很多民族,只有語言沒有文字。但是這不能證明中國文字也是語言的記錄,也就是說不能證明中國文字產生在語言之後。人類最早在地上或岩石上畫畫時,可能五...

計算改變行距的label高度

改變行距 textstr uilabel的text void setspaceline uilabel label string nsstring textstr str 要現實的 字串 font 字型 labwidth lab最大寬度 linespacing 行間距 numberoflines 顯...