Linux處理海量資料之cut awk sed命令

2021-10-23 21:28:37 字數 2316 閱讀 7430

cut應用場景:通常對資料進行列的提取

語法:cut [選項]...[file]

選項:

-d #指定分割符

-f  #指定擷取區域

-c #以字元為單位進行分割

注意:不加-d選項,預設為製表符,不是空格

例子:

以':'為分隔符,截取出/etc/passwd的第一列跟第三列

cut -d ':' -f 1,3 /etc/passwd

以':'為分隔符,截取出/etc/passwd的第一列到第三列

cut -d ':' -f 1-3 /etc/passwd

以':'為分隔符,截取出/etc/passwd的第二列到最後一列

cut -d ':' -f 2- /etc/passwd

擷取/etc/passwd檔案從第二個字元到第九個字元

cut -c 2-9 /etc/passwd

擷取linux上面所有可登陸普通使用者

cat /etc/passwd | grep '/bin/bash' | cut -d ':' -f 1 | grep -v root

awk的簡介

乙個非常強大的資料處理命令,支援條件判斷,陣列,迴圈等功能,與grep,sed被稱為 linux檔案處理的三**寶

awk的應用場景:通常對資料進行列的提取

語法:

awk '條件1 條件2 ...' 檔名

awk [選項] '條件1 條件2 ...' 檔名

特殊要點與說明:

printf  #格式化輸出,不會自動換行。

print  #列印出內容,缺省會自動換行

%s #代表字串

\t  #製表符

\n  #換行符

eg:printf '%s\t%s\t%s\t%s\t%s\t%s\n' 1 2 3 4 5 6

awk的一些特殊要點與舉例說明:

nr #行號

$1 #代表第一列

$2 #代表第二列

$nf#代表最後一列

eg:df -h | awk 'nr==4 '

df -h | awk '(nr>=2 && nr <=5) '

df -h | awk ''

-f #指定分割符

eg:awk -f":" '' /etc/passwd

begin #在讀取所有行內容前就開始執行,一般用來初始化操作

eg:cat /etc/passwd | awk 'begin '

df -h |grep -v 'filesystem' | awk ' '

df -h |grep -v 'filesystem' | awk 'begin

'end #結束的時候 執行

eg:df -h |grep -v 'filesystem' | awk 'begin

end '

sed的應用場景:主要對資料進行處理(選取,新增,替換,刪除,搜尋)

sed語法: sed [選項] [動作] 檔名

常見的選項與引數:

-n #把匹配到的行輸出列印到螢幕

p #以行為單位進行列印,通常與-n一起使用

eg:df -h | sed -n '2p'

d #刪除

eg:df -h | sed '2d'

a #在行的下面插入新的內容

eg:df -h | sed '2a 1234567890'

i #在行的上面插入新的內容

eg:df -h | sed '2i 1234567890'

c #替換

df -h | sed '2c 1234567890'

指定字串替換:s/要被取代的內容/新的字串/g #指定內容進行替換

eg:df -h | sed 's/centos-root/centos7/g'

-i #對原始檔進行修改(高危操作,慎用,用之前需要備份原始檔)

eg:sed -i 's/centos7/centos8/g' df.txt

搜尋:在檔案中搜尋內容

eg:sed -n '/tmpfs/p' df.txt

-e #表示可以執行多條動作

eg:sed -e 's/centos8/centos7/g' -e 's/tmpfs/tmp/g' df.txt >123.txt

海量資料處理之Bitmap

什麼是bit map 所謂的bit map就是用乙個bit位來標記某個元素對應的value,而key即是該元素。由於採用了bit為單位來儲存資料,因此在儲存空間方面,可以大大節省。如果說了這麼多還沒明白什麼是bit map,那麼我們來看乙個具體的例子,假設我們要對0 7內的5個元素 4,7,2,5,...

演算法之海量資料處理

1.雜湊 分治 尋找共同的url 給定兩個a和b檔案,各存放50億個url,每個url佔64位元組,記憶體限制4gb,請找出a和b檔案中共同的url。乙個檔案的記憶體 5 000 000 000 64 320gb,每個檔案可以分為100個小檔案,每個檔案大約是3.2gb。1000萬個字串去重 假設每...

海量資料處理 高階程式設計師之海量資料處理

何謂海量資料處理?所謂海量資料處理,無非就是基於海量資料上的儲存 處理 操作。何謂海量,就是資料量太大,所以導致要麼是無法在較短時間內迅速解決,要麼是資料太大,導致無法一次性裝入記憶體。那解決辦法呢?針對時間,我們可以採用巧妙的演算法搭配合適的資料結構,如bloom filter hash bit ...