shell awk命令


語法:

awk '{command}' filename  多個命令以分號分隔

awk 'BEGIN {command1} {command2} END{command3}'  注意:BEGIN ,END 需要大寫

常用變量說明:

FS : 指定分隔符,默認是空格和tab 。 也可以簡寫 -F ";"

NR: 目前處理的是【第幾行】數據 ,文件中的行標

NF: 每一行的列數(段、欄位)

 

例子1:

# 以tab作為分隔符
# print $0 表示打印所有列, $1 表示打印第一列 ,不寫默認打印所有列

# 打印所有列,用 -F 指定分隔符 ,$0
awk -F "\t" '{print $0}' zss_test.txt
# 打印所有列,用 -F 指定分隔符
awk -F "\t" '{print }' zss_test.txt
# 打印所有列,用 FS 指定分隔符
awk 'FS=="\t"; {print $0}' zss_test.txt

打印結果1:

 

例子2:

##查看文件內容
cat -n zss_test.txt

##NR,NF使用
awk 'FS=="\t"; {print $1 "\t rows:"NR "\t columns:"NF}' zss_test.txt

##利用NF,打印最后一列
awk -F "\t" '{print $NF}' zss_test.txt

打印結果2:

 

例子3:

##刪除指定目錄下的所有文件 慎用

ls -l|awk '{print "rm -fr " $9}'|sh

例子4:

# 利用printf 格式化輸出 %s 字符,%d 整數,%f 浮點 ; 
# %10s 右對齊,長度10,實際長度大於設置長度,按實際長度
# %-10s 左對齊,其他同上

#打印文件內容
cat -n kimbo_test.txt

#打印第二行之后的,列1,列4
awk -F"|" 'NR>=2{print $1,$4}' kimbo_test.txt
#打印第二行之后的,列1,列4 ,利用printf格式話輸出 ,列1左對齊
awk -F"|" 'NR>=2{printf "%-30s\t%5.2f\n",$1,$4;}' kimbo_test.txt
#打印第二行之后的,列1,列4 ,利用printf格式話輸出 ,列1右對齊
awk -F"|" 'NR>=2{printf "%30s\t%5.2f\n",$1,$4;}' kimbo_test.txt

##多個命令,可以分號分隔
## 打印第二行之后的,列1,列4 ,利用printf格式話輸出 ,列1左對齊
awk -F"|" 'NR>=2{printf "%-30s\t",$1}; NR>=2{printf "%5d\n", $4}' kimbo_test.txt 

打印結果4:

 

例子5:

##begin end 用法

#打印第二行之后的,列1,列4
awk -F"|" 'BEGIN {print "start-->"} NR>=2{print $1,$4} END{print "end"}' kimbo_test.txt

打印結果5:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM