LInux 命令awk學習

awk的學習:

今天去做數據準備的時候發現不知道怎麼準備,然後各種百度。

一、實現的功能:現有倆個文件a.txt(裏邊有倆列數據: bid,name), b.txt(好幾列數據:bid, pv)。其中a.txt有3800w的數據量,b.txt有1300w的數據量,而且a.txt的數據包含b.txt的數據,要將b.txt的數據在a.txt裏邊刪除掉,並且還要給b.txt的bid 對應加上name。

二、實現步驟:

  1. 獲取b.txt文件第一列數據生成新的b_bid.txt文件: awk -F ‘\t’ ‘{print $1}’ b.txt > b_bid.txt (-F指定命令符:具體 https://www.cnblogs.com/xudong-bupt/p/3721210.html)

  2. 獲取倆個不同文件的數據,將b_bid.txt文件的$1(第一列)和a.txt的文件$1進行比較是否一樣,一樣的話就講a.txt的$1,$2 輸出到一個新的文件new_b_bid.txt(bid, name 是指的b.txt重構之後的文件): awk ‘{if (NR==FNR) {arr1[$1]=$2}}NR>FNR{if($1 in arr1) {print $1,$2}}’ b_bid.txt a.txt > new_b_bid.txt(NR,FNR 具體:https://www.dwhd.org/20150614_005258.html)

  3. 將生成的new_b_bid.txt和a.txt進行對比(對比要注意倆文件的數據格式保持一致,特別列與列的空格); 先用命令 awk ‘print $0’ a.txt new_b_bid.txt > push_all_bid.txt 將倆文件進行合併(此命令是以追加的方式存進來的,就是先存放的是a.txt,再存放new_b_bid.txt)。 最後 排序 去掉重複的值(sort | uniq -u > push_b_bid.txt),生成最終想要的文件push_b_bid.txt。

  4. 友情鏈接awk:https://www.dwhd.org/20150614_005258.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章