日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

AWK工具的用法

發布時間:2023/11/27 生活经验 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AWK工具的用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基本格式

awk '{commands}' filename
或者
stdin | awk '{commands}'

以下,均簡寫為awk '{commands}'的形式

commands的用法

commands逐行作用于文本流

  1. $1當前行第一列數據,$NF最后列,$(NF-1)即倒數第二列
awk '{print $(NF-1)}'
# 補充說明:
$0 當前行所有列
NR 當前行號
NF 當前行字段數
  1. print默認結尾換行;printf不換行
awk '{printf $1}'
  1. 多條語句以分號間隔
awk '{printf $1; print $(NF-1)}'
  1. 多個參數以逗號間隔,打印后以空格間隔
awk '{print $1, $2, $3}'
  1. 空格會被忽略不計
awk '{print $1 $2}'
打印結果這兩個參數會被[字符拼接]
  1. 雙引號拼接字符
awk '{print $1 ":" $2}'
打印結果是這兩個參數用冒號連接
# 補充說明
外層的單引號也可以用雙引號,
此時內層拼接用單引號
  1. 通過for循環打印范圍列
awk '{for(i=9;i<NF;i++) printf $i"\t"; print ""}'  
以分號制造了兩個語句
1. 循環語句僅作用于緊跟著的打印語句
2. 循環完成后執行print語句換行 # 補充說明
如果for循環內有多條語句,必須使用大括號括起來:
awk '{
for(i=9;i<NF;i++){printf $i;  #此處分號不可以省略print "\t"};  #此處分號可以省略
print "";  #此處分號不可以省略
print ""
}'  
  1. 通過條件判斷執行打印
方法一: 條件操作語句(和for循環用法一致)
awk '{if($9>=100 && $10>=50)printf $9;print ""}'
使用多條語句:
awk '{if($9>=100 && $10>=50){printf $9;printf "\t"$10}else if($9<100 && $10 >=50){printf "$10"}else{print "it\'s ok"}
}'
方法二: 條件模式
awk自帶三個條件模式:前面講的所有均為中間的commands:
awk 'BEGIN {COMMANDS1} pattern {commands} END {COMMANDS2}'實例:awk '$9>=100||$10>=2{print $9"\t"$10}'
第九列值大于100且第十列值大于2時,打印這兩個值awk '!/CrowdApp/ && $9>=50 {print $9"\t"$10}'
包含CrowdApp字段,且第九個字段大于50時,打印xxxawk 'NR==5,NR==10{print $0}'
打印5-10行的所有值
  1. BEGIN和END
awk 'BEGIN{ i=0 } /CrowdApp/ {print $0;i++} END{print $i}'# 補充說明
BEGIN在執行awk所有命令前先執行一次;
patterns內的command每一行都會執行一次;
END只有在執行完所有語句后執行一次。
  1. awk參數傳遞
方法一:
awk -v var=$pwd '{print var}'
方法二:
awk '{print v1, v2}' v1=$VAR1, v2=$VAR2
  1. 指定字段分隔符
awk -F: '{print $NF}'
默認以空格分割各個字段;此時指定冒號分割

轉載于:https://www.cnblogs.com/jiukun/p/9325512.html

總結

以上是生活随笔為你收集整理的AWK工具的用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。