sed管道命令及資料處理工具awk命令

2021-08-22 10:22:27 字數 1784 閱讀 1077

語法:

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 可以對檔...