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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

浅析Linux awk命令

發布時間:2024/2/28 linux 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浅析Linux awk命令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

?


示例:

[root@henu1 ~]# vi marks.txt

1) ? ? ?George ?English 100
2) ? ? ?Didi ? ?English 100
3) ? ? ?George ?English 100
4) ? ? ?George ?English 100
5) ? ? ?George ?English 100

[root@henu1 ~]# awk 'BEGIN{printf "SrNo\tName\tSub\tMarks\n"} {print}' marks.txt

[root@henu1 ~]# awk '{print}' marks.txt

[root@henu1 ~]# vi command.awk

{print}

[root@henu1 ~]# awk -f command.awk marks.txt


?基本用法:

log.txt文本內容如下:

2 this is a test 3 Are you like awk This's a test 10 There are orange,apple,mongo

用法一:

awk '{[pattern] action}' {filenames} # 行匹配語句 awk '' 只能用單引號

實例:

輸出每一行的1、2列 awk '{print $1,$2}' log.txt

格式化輸出 awk '{printf "%-8s %-10s\n",$1,$4}' log.txt


用法二:?

  • vi marks.txt

1), ? ? George, English 100
2), ? ? Didi, ? English 100
3), ? ? George, English 100
4), ? ? George, English 100
5), ? ? George, English 100

根據逗號切割 [root@henu1 ~]# awk -F, '{print $1,$2}' marks.txt

[root@henu1 ~]# awk 'BEGIN{FS=","} {print $1,$3}' marks.txt

[root@henu1 ~]# awk -F '[ ,]' '{print $1,$2,$1}' marks.txt

?


用法三:

[root@henu1 ~]# awk -va=1 '{print $1,$1+a}' log.txt

[root@henu1 ~]# awk -va=1 -vb=s '{print $1,$1+a,$1b}' log.txt

用法四:

  • vi cal.awk
{print $1,$1+a,$1b} [root@henu1 ~]# awk -va=1 -vb=s -f cal.awk log.txt


過濾第一列大于2的行

過濾第一列等于2的行

過濾第一列大于2并且第二列等于'Are'的行


輸出順序號 NR, 匹配文本行號

awk -F\' 'BEGIN{printf "%4s %4s %4s %4s %4s %4s %4s %4s %4s\n","FILENAME","ARGC","FNR","FS","NF","NR","OFS","ORS","RS";printf "---------------------------------------------\n"} {printf "%4s %4s %4s %4s %4s %4s %4s %4s %4s\n",FILENAME,ARGC,FNR,FS,NF,NR,OFS,ORS,RS}' log.txt

指定輸出分割符



使用正則,字符串匹配

輸出第二列包含 "th",并打印第二列與第四列

[root@henu1 ~]# awk '$2 ~ /th/ {print $2,$4}' log.txt

~ 表示模式開始。// 中是模式。

[root@henu1 ~]# awk '/re/' log.txt


忽略大小寫

[root@henu1 ~]# awk 'BEGIN{IGNORECASE=1} /this/' log.txt


模式取反

[root@henu1 ~]# awk '$2 !~ /th/ {print $2,$4}' log.txt


awk腳本

關于awk腳本,我們需要注意兩個關鍵詞BEGIN和END。

  • BEGIN{ 這里面放的是執行前的語句 }
  • END {這里面放的是處理完所有的行后要執行的語句 }
  • {這里面放的是處理每一行時要執行的語句}

假設有這么一個文件(學生成績表):

  • vi score.txt
Marry 2143 78 84 77 Jack 2321 66 78 45 Tom 2122 48 77 71 Mike 2537 87 97 95 Bob 2415 40 57 62
  • vi cal.awk
#!bin/awk -f #運行前 BEGIN {math = 0english = 0computer = 0print "NAME NO. MATH ENGLISH COMPUTER TOTAL\n"print "-----------------------------------\n" } #運行中 {math+=$3english+=$4computer+=$5printf "%-6s %-6s %4d %8d %8d %8d\n", $1, $2, $3,$4,$5, $3+$4+$5 } #運行后 END {printf "---------------------------------------------\n"printf " TOTAL:%10d %8d %8d \n", math, english, computerprintf "AVERAGE:%10.2f %8.2f %8.2f\n", math/NR, english/NR, computer/NR }


?

?

總結

以上是生活随笔為你收集整理的浅析Linux awk命令的全部內容,希望文章能夠幫你解決所遇到的問題。

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