語法:
sed [-nefri] [動作]
-n:使用安靜模式,在一般情況所有的 stdin 都會輸出到螢幕上,加入-n 後只列印
被 sed 特殊處理的行
-e:多重編輯,且命令順序會影響結果
-f:直接將sed的動作寫在乙個檔案中,然後-f filename則可執行filename內的sed動作
-r:sed 使用擴充套件正則,預設是基礎正規表示式語法
-i:直接修改文件讀取的內容,不在螢幕上輸出
動作說明:[n1[,n2]]function
n1,n2:不見得會存在,一般代表選擇進行動作的行數。如在10-20行內,則10,20[動作]
function有下面引數:
a 在當前行後新增一行或多行
c 用新文字修改(替換)當前行中的文字
d 刪除行
i 在當前行之前插入文字
p 列印行
s 用乙個字串替換另乙個,例如:1,20s/old/new/g(在1-20行內用new替換old單詞)
舉例:刪除
nl /etc/passwd | sed '2,5d'
新增nl /etc/passwd | sed '2a drink tea'
行替換nl /etc/passwd | sed '2,5c no 2-5 number'
顯示nl /etc/passwd | sed -n '5,7p'
替換字元
nl /etc/passwd | sed 's/要被替換的字串/新字元/g'
awk語法:
awk 『條件型別1{動作1}條件型別2{動作2}...』 filename
awk可以處理後續接的檔案,也可以讀取來自前個命令的standardoutput。但awk主要是處理每一行的字段內的資料,而預設的字段的分隔符為空格鍵和\t鍵。
要讓awk知道這個資料有幾行幾例,需要awk內建變數的輔助:
nf 每一行($0)擁有的字段總數 ($0代表一整行資料,$1代表每一行的第乙個字段,$n代表每行的第n個字段)
nr 目前awk所處理的是第幾行資料
fs 目前的分隔符,預設是空格鍵
舉例1:
獲取/etc/passwd中前三列資料且第三列小於10以下的資料
cat /etc/passwd | awk ' $3 < 10 '
改進:cat /etc/passwd | 'begin awk ' $3 < 10 '
舉例2:
pay.txt內容如下:
name 1st 2nd 3th
vbird 23000 24000 25000
dmtsai 21000 20000 23000
liang 43000 42000 41000
輸出要求:第一行只是說明,所以第一行不要進行加總(nr=1時處理);
第二行以後就會有加總的情況出現(nr>=2以後要處理)
cat pay.txt | awk 'nr=1
nr>=2'
針對第個舉例進行說明:
i、所有awk的動作,即在{}內的動作,如果有需要多個命令輔助時,可利用分號「;」間隔,或者直接以[enter]按鍵來隔開每個命令
ii、邏輯運算當中,如果是「等於」的情況,則務必使用兩個等號「==」
iii、格式化輸出時,在printf的格式設定當中,務必加上\n,才能進行分行!
iv、與bash、shell的變數不同,在awk當中,變數可以直接使用,不需加上$符號
大資料處理工具
一 大資料的4v特性 1 volume 體量巨大 2 variety 資料型別繁多 3 value 價值密度低 4 velocity 處理速度快 二 大資料處理需要解決的問題 1 儲存 2 計算 3 挖掘 4 展現 三 大資料處理涉及的6個方面 1 資料入口 資料傳輸和同步一般採用基於時間線的實時同...
資料處理工具之awk
1.awk是以行為一次處理的單位,而以字段為最小的處理單位。awk分別代表其作者姓氏的第乙個字母。因為它的作者是三個人,分別是alfred aho brian kernighan peter weinberger。2.awk命令的格式 awk 條件型別1 條件型別2 filename 備註,awk可...
awk 好用的資料處理工具
平常工作或學習中總是需要對一些資料進行處理 例如在工作中,需要對日誌的一些資料進行統計 而awk 這是好用的工具之一,傾向於一行當中分成數個字段進行處理。awk 條件型別1 條件型別2 filename兩個單引號 大括號 設定想要對資料進行的處理操作,filename表示處理的資料檔案。1 可以對檔...