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

歡迎訪問 生活随笔!

生活随笔

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

linux

打开高效文本编辑之门_Linux awk之自定义变量与操作符

發布時間:2024/9/27 linux 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 打开高效文本编辑之门_Linux awk之自定义变量与操作符 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Linux awk之自定義變量與操作符

聲明與簡介

AWK 是一種處理文本文件的語言,是一個強大的文本分析工具。awk通常用來處理結構化(固定格式)的文本文件, awk每接收文件的一行,然后執行相應的命令來處理文本。
本文主要結合數據以案例形式介紹Awk里怎樣定義和使用自定義變量、運算符。

數據說明

emp_3_only.txt,該數據來自全量的員工表的前3行。

7369,smith,clerk,7902,'1980-12-17',800,null,20
7499,allen,salesman,7698,'1981-2-20',1600,300,30
7521,ward,salesman,7698,'1981-2-22',1250,500,30


定義變量

這里的變量區別于系統變量,是用戶根據業務需要自定義的變量。

使用自定義變量

# 1 先打印員工的所有信息,再統計總工資數。定義如下腳本并保存到awk_var.awk內。BEGIN { FS=","; sum=0; }{ print $1"的工資是:"$6;sum=sum+$6; }END {print "\n 員工的所有工資之和為:"sum;} # 2 外部調用awk腳本 awk -f awk_var.awk emp_3_only.txt# 結果為: 7369的工資是:800 7499的工資是:1600 7521的工資是:1250員工的所有工資之和為:3650# 這里 Step1 通過定義自定義變量sum,初始化為0, Step2 隨文件的讀取,一行行的對工資字段進行累加 Step3 輸出累加后的值。注:1 這里BEGIN需要大寫。2 BEGIN必須和{在一行,它們之間可以無空格。

操作符號

操作符分為計算符、字符串運算符、賦值運算符、比較運算符、正則運算符。

常見運算符

# 通過運算符先將員工工資加1,然后再加100。這里用到了++、+。 awk -F',' '{print ++$6,$6+100}' emp_3_only.txt? # 結果 801 901 1601 1701 1251 1351

字符串運算

# 這里演示的是通過空格連接字符串,這里額外加了分隔符”$”。 awk 'BEGIN{ \ str1="Hello"; \ str2="awk"; \ numstr="100"; \ print str1 "$"str2; print numstr++; \ }'#結果 Hello$awk 100

賦值運算符

常見的賦值運算符有 =、+=、-=、=、*=、%=。這里是把單一的賦值運算符”=”進行了延展即做常見運算后賦值。

# 1 使用賦值運算符演示 +=、%=的使用。 awk 'BEGIN{ \ initnum =plusnum=modenum = 100; \ plusnum += 20; \ modenum %= 3; \ print initnum "\t"plusnum"\t"modenum; \ }' # 結果 100?? ?120?? ?1# 2 其代碼等價于如下 awk 'BEGIN{ \ initnum = 100; \ plusnum = 100+20; \ modenum = 100%3; \ print initnum "\t"plusnum"\t"modenum; \ }'

比較運算符

常見比較運算符有>、>=、<=、==、!=、&&、||

# 輸出工資在1300和1700之間的員工編號和姓名。 awk -F"," '$6>=1300 && $6<1700 {print $1,$2,$6}' emp_3_only.txt? 7499 allen 1600#結果 7499 allen 1600

正則匹配符

常見比較運算符有~、!~。其中~即為匹配的意思,而!~是反向(匹配不到的情況)。

# 匹配員工姓名里含“a”的員工,并打印出員工號、姓名、工資。 awk -F"," '$2 ~"a" {print $1,$2,$6}' emp_3_only.txt? 7499 allen 1600 7521 ward 1250#結果 7499 allen 1600 7521 ward 1250

總結

以上是生活随笔為你收集整理的打开高效文本编辑之门_Linux awk之自定义变量与操作符的全部內容,希望文章能夠幫你解決所遇到的問題。

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