浅析Linux awk命令
生活随笔
收集整理的這篇文章主要介紹了
浅析Linux awk命令
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
?
示例:
[root@henu1 ~]# vi marks.txt1) ? ? ?George ?English 100
2) ? ? ?Didi ? ?English 100
3) ? ? ?George ?English 100
4) ? ? ?George ?English 100
5) ? ? ?George ?English 100
{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 -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
過濾第一列大于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.txtawk腳本
關于awk腳本,我們需要注意兩個關鍵詞BEGIN和END。
- BEGIN{ 這里面放的是執行前的語句 }
- END {這里面放的是處理完所有的行后要執行的語句 }
- {這里面放的是處理每一行時要執行的語句}
假設有這么一個文件(學生成績表):
- vi score.txt
- vi cal.awk
?
?
總結
以上是生活随笔為你收集整理的浅析Linux awk命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos vi模式下不能返回普通模式
- 下一篇: Linux Shell 文本处理工具集锦