打开高效文本编辑之门_Linux Awk自定义变量与操作符
生活随笔
收集整理的這篇文章主要介紹了
打开高效文本编辑之门_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定義變量
這里的變量區別于系統變量,是用戶根據業務需要自定義的變量。
使用自定義變量
# 先打印員工的所有信息,再統計總工資數。定義如下腳本并保存到awk_var.awk內。BEGIN { FS=","; sum=0; }{ print $1"的工資是:"$6;sum=sum+$6; }END {print "\n 員工的所有工資之和為:"sum;}# 外部調用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賦值運算符
常見的賦值運算符有 =、+=、-=、=、*=、%=。這里是把單一的賦值運算符”=”進行了延展即做常見運算后賦值。
# 使用賦值運算符演示 +=、%=的使用。 awk 'BEGIN{ \ initnum =plusnum=modenum = 100; \ plusnum += 20; \ modenum %= 3; \ print initnum "\t"plusnum"\t"modenum; \ }' # 結果 100 120 1# 其代碼等價于如下 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正則匹配符
常見比較運算符有~、!~。其中~即為匹配的意思,而!~是反向(匹配不到的情況)。
# 匹配員工姓名里含“a”的員工,并打印出員工號、姓名、工資。 awk -F"," '$2 ~"a" {print $1,$2,$6}' emp_3_only.txt #結果 7499 allen 1600 7521 ward 1250?
總結
以上是生活随笔為你收集整理的打开高效文本编辑之门_Linux Awk自定义变量与操作符的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 15式主战坦克为什么能碾压T-72
- 下一篇: 贵阳恒大半山御景128平有两个地下室是几