awk筆記備忘

2022-01-24 11:24:55 字數 2104 閱讀 8971

awk pattern  

# $0變數是指整條記錄,$1表示當前行的第乙個域,$2表示當前行的第二個域,$n當前記錄的第n個域,欄位間由fs分隔, 每行按 fs 字段分隔符(預設是空格或tab)

# cat 1.txt

beth 4.00 0

dan 3.75 0

kathy 4.00 10

mark 5.00 20

mary 5.50 22

susie 4.25 18

# 輸出文字中的1、3列

awk '』 1.txt

beth 0

dan 0

kathy 10

mark 20

mary 22

susie 18

# $nf是number finally,表示最後一列的資訊

awk '' 1.txt00

1020

2218

# 篩選 第三列等於0的第一列的值

awk '$3 == 0 ' 1.txt

beth

dan# -f 指定輸入檔案折分隔符

cat 2.txt

# 2.txt

beth:4.00:0

awk -f ':' '' 2.txt

4.00

# 列印出每行的行號nr代表行號

awk '' 1.txt

我是行號 1 beth 4.00 0

我是行號 2 dan 3.75 0

我是行號 3 kathy 4.00 10

我是行號 4 mark 5.00 20

我是行號 5 mary 5.50 22

我是行號 6 susie 4.25 18

# begin 和 end

# begin 用於匹配第乙個輸入檔案的第一行之前的位置, end 則用於匹配處理過的最後乙個文# 件的最後一行之後的位置

awk 'begin ' 1.txt

標題一標題二 標題三

-------------------

beth 4.00 0

dan 3.75 0

kathy 4.00 10

mark 5.00 20

mary 5.50 22

susie 4.25 18

# 列印最後一行 等同於 tail -n 1 1.txt 等同於 sed -n '$p' 1.txt

awk 'end ' 1.txt

susie 4.25 18

# 設定變數

awk ' ' 1.txt

beth~~~~~

dan~~~~~

kathy~~~~~

mark~~~~~

mary~~~~~

susie~~~~~

# for迴圈 每行列印2遍

awk '' 1.txt

beth 4.00 0

beth 4.00 0

dan 3.75 0

dan 3.75 0

kathy 4.00 10

kathy 4.00 10

mark 5.00 20

mark 5.00 20

mary 5.50 22

mary 5.50 22

susie 4.25 18

susie 4.25 18

# 逆序列印

awk 'end' 1.txt

susie 4.25 18

mary 5.50 22

mark 5.00 20

kathy 4.00 10

dan 3.75 0

beth 4.00 0

# 去重複行

awk '!($0 in x)' 1.txt

# 其他:

awk備忘,強大的awk

越來越發現awk的強大,做了實驗,做了總結 備忘!在linux shell中呼叫awk awk x x即為awk命令,命令必須包含在單引號中,至少雙引號都不行 方法一 awk f nr 7,nr 15 方法二 awk nr 7,nr 15 設定awk分隔符 nf 顯示域的個數 不是分隔符數,一般應該...

我的awk常用命令備忘 xargs備忘

kubectl get deployment n coding awk xargs kubectl rollout restart deployment n coding 重啟所有 coding命名空間 deployment 重啟業務deployment指令碼 bin bash user list ...

awk學習筆記

單詞計數 cat filename awk end 排序演算法 bin bash function f while n 1 do f 1 shift done wait 顯示特殊符 var i am a student echo var awk 結果為 am a i student echo var...