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 #格式化輸出,不會自動換行。awk的一些特殊要點與舉例說明:print #列印出內容,缺省會自動換行
%s #代表字串
\t #製表符
\n #換行符
eg:printf '%s\t%s\t%s\t%s\t%s\t%s\n' 1 2 3 4 5 6
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 ...