awk簡單使用

廢話不多說,直接上操作。
示例文本:

水果 蘋果,橘子,香蕉,鴨梨
蔬菜 豆角,茄子,蘿卜,白菜
手機 華為,酷派,聯想,小米

0.awk完整結構(以計算某列總和為例)
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.通過空格分割種類與詳細名稱
awk -F ' ' '{print "種類:"$1,"包含:"$2}' file

示例圖片

通過-F命令,使用空格‘' '’對每一行數據進行分割
通過‘'{print "xxx"$n}'’ 進行拼接分割后的第n列數據,并打印


2.在1的基礎上繼續拆封詳細子項
awk -F '[ ,]' '{print "種類:"$1,"包含:a="$2,"b="$3,"c="$4,"d="$5}' file

image.png

通過‘'[ ,]'’使每一行數據一次按空格、逗號進行分割數據


3.打印出行內包含橘子的數據
awk -F '[ ]' '$2~/橘子/{print $1,$2}' file

示例圖片

通過"$2~/橘子/"匹配到這一列內包含‘橘子’的每行數據,進行打印


4.打印出某列以華為開頭的數據
awk -F '[ ]' '$2~/^華為/{print $1,$2}' file

示例圖片


5.根據空格分割后,打印第一列的長度
awk -F '[ ]' '{print length($1),$1}' file

示例圖片


修改示例文本:

fruit 蘋果,橘子,香蕉,鴨梨
greenstuff 豆角,茄子,蘿卜,白菜
phone 華為,酷派,聯想,小米

6.打印種類名稱長度為5的行數據
awk -F '[ ]' 'length($1)==5{print length($1),$1,$2}' file

示例圖片


7.打印符合6題的數據行數及文件內數據總行數
awk -F '[ ]' 'length($1)==5{i++;print length($1),$1,$2}END{print i,NR}' file

示例圖片


8.NF、NR、FNR簡單說明
8.1 打印第1列,第12行數據
awk 'NF=1&&NR==12' executor-application.log
8.2 含義
NF:表示列
1NF:表示第一列
$NF:表示最后一列


9.排序問題
可以使用系統sort sort -r 進行正序倒序排列


10.結果去重
awk '!(1 in a){a[1];print $1}'


持續更新中...

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • awk awk的工作模式是掃描文件中的每一行, 并且對符合條件的行進行處理, 處理的時候可以針對整行, 也可以針對...
    董成鵬閱讀 481評論 0 0
  • 今天想用簡單的shell操作數據中的列,發現awk特別好用,簡單記錄下 通常使用 awk來獲取多個列的情況,比如有...
    早點起床曬太陽閱讀 259評論 0 0
  • 匹配輸出cat test.txt | grep "result" | awk -v FS="|" '{if($4 ...
    星城天空閱讀 184評論 0 0
  • 參考文章:https://www.cnblogs.com/along21/p/10366886.html#重要!參...
    一只煙酒僧閱讀 396評論 0 2
  • 概述 Awk是一種便于使用且表達能力強的程序設計語言,可應用于各種計算和數據處理任務 舉例說明 有用的awk程序往...
    saidev閱讀 250評論 0 0