廢話不多說宏赘,直接上操作。
示例文本:
水果 蘋果,橘子,香蕉,鴨梨
蔬菜 豆角,茄子,蘿卜,白菜
手機(jī) 華為,酷派,聯(lián)想,小米
0.awk完整結(jié)構(gòu)(以計(jì)算某列總和為例)
echo -e "123\n234\n345\n456\n567\n678" | awk 'BEGIN{sum=0;printf "總和:"}{if(NR<=4)printf $1"+";sum+=$1; if(NR==6)printf $1 "="}END{print sum}'
1.通過空格分割種類與詳細(xì)名稱
awk -F ' ' '{print "種類:"$1,"包含:"$2}' file
通過-F命令巩螃,使用空格‘' '’對(duì)每一行數(shù)據(jù)進(jìn)行分割
通過‘'{print "xxx"$n}'’ 進(jìn)行拼接分割后的第n列數(shù)據(jù)届惋,并打印
2.在1的基礎(chǔ)上繼續(xù)拆封詳細(xì)子項(xiàng)
awk -F '[ ,]' '{print "種類:"$1,"包含:a="$2,"b="$3,"c="$4,"d="$5}' file
通過‘'[ ,]'’使每一行數(shù)據(jù)一次按空格、逗號(hào)進(jìn)行分割數(shù)據(jù)
3.打印出行內(nèi)包含橘子的數(shù)據(jù)
awk -F '[ ]' '$2~/橘子/{print $1,$2}' file
通過"$2~/橘子/"匹配到這一列內(nèi)包含‘橘子’的每行數(shù)據(jù)舞蔽,進(jìn)行打印
4.打印出某列以華為開頭的數(shù)據(jù)
awk -F '[ ]' '$2~/^華為/{print $1,$2}' file
5.根據(jù)空格分割后贩据,打印第一列的長(zhǎng)度
awk -F '[ ]' '{print length($1),$1}' file
修改示例文本:
fruit 蘋果,橘子,香蕉,鴨梨
greenstuff 豆角,茄子,蘿卜,白菜
phone 華為,酷派,聯(lián)想,小米
6.打印種類名稱長(zhǎng)度為5的行數(shù)據(jù)
awk -F '[ ]' 'length($1)==5{print length($1),$1,$2}' file
7.打印符合6題的數(shù)據(jù)行數(shù)及文件內(nèi)數(shù)據(jù)總行數(shù)
awk -F '[ ]' 'length($1)==5{i++;print length($1),$1,$2}END{print i,NR}' file
8.NF栋操、NR、FNR簡(jiǎn)單說明
8.1 打印第1列饱亮,第12行數(shù)據(jù)
awk 'NF=1&&NR==12' executor-application.log
8.2 含義
NF:表示列
1NF:表示第一列
$NF:表示最后一列
9.排序問題
可以使用系統(tǒng)sort sort -r 進(jìn)行正序倒序排列
10.結(jié)果去重
awk '!(1];print $1}'
持續(xù)更新中...