Linux4-文本處理三駕馬車:grep, sed, awk


Linux基礎(chǔ)課程系列:


1. grep

grep:一種強(qiáng)大的文本搜索工具,它能使用正則表達(dá)式匹配模式搜索文本红碑,并把匹配的行打印出來
格式:grep [options] pattern file ([]內(nèi)的部分可以省略)

常見參數(shù) 含義
-w word 精確查找某個(gè)關(guān)鍵詞pattern
-c 統(tǒng)計(jì)匹配成功的行的數(shù)量
-v 反向選擇各聘,即輸出沒有沒有匹配的行
-n 顯示匹配成功的行所在的行號(hào)
-r 從目錄中查找pattern
-e 指定多個(gè)匹配模式
-f 從指定文件中讀取要匹配的pattern
-i 忽略大小寫
-E 匹配正則表達(dá)式(在-E 之后碌上,正則表達(dá)式的符號(hào)不需要加反斜杠)

2. sed

sed:流編輯器斥铺,一般用來對文本進(jìn)行增刪改查(sed是以為單位來處理的)雄嚣。
用法:sed [-options] 'script' file(s)

  • options
常見參數(shù) 含義
-n 取消默認(rèn)輸出菇绵,只顯示經(jīng)過sed處理或匹配的行(常用)
-e 直接在命令模式上進(jìn)行sed 的動(dòng)作編輯篮绰,接要執(zhí)行的一個(gè)或者多個(gè)命令
-i 直接修改讀取的文件內(nèi)容后雷,不輸出。(除非使用-i修改內(nèi)容,其他時(shí)候使用sed臀突,原文件不會(huì)發(fā)生改變勉抓。不建議隨便使用-i參數(shù))
  • script
    'script'的格式:[address][!] command。address和!可以被省略候学,command不可以被省略藕筋。
常見'script' address 含義
2 第2 行
2,4 第2 行第4 行
2,$ 第2 行到最后一行,$ 表示最后
2~3 從第2 行開始梳码,每隔3 行取一行
2,+4 從第2 行到2+4 行
/pattern/ 匹配上pattern 的行

[!] 表示否定隐圾,取反(相當(dāng)于grep -v)

常見'script' command 含義
a append,在指定行的增加一行掰茶,內(nèi)容為a 的后面接的字符串(增)
i insert暇藏,在指定行的增加一行,內(nèi)容為i 的后面接的字符串(增)
d delete濒蒋,刪除某一行或者某幾行盐碱,也可以指定刪除匹配上的行(刪)
c change,改變指定行的內(nèi)容(改)
s 替換啊胶,使用格式為's/pattern/new/[flags]'甸各,把pattern替換成new垛贤,默認(rèn)只替換一個(gè)焰坪,可以指定flags。flag設(shè)為g時(shí)和vim中一樣聘惦,是全局替換某饰。設(shè)為1是為出現(xiàn)第一次時(shí)進(jìn)行替換。(改)
y 轉(zhuǎn)換善绎,實(shí)現(xiàn)字符一對一轉(zhuǎn)換黔漂,格式'y/inchars/outchars/'。incharts和outcharts的字符數(shù)必須一致禀酱。(改)
p print炬守,把匹配或修改過的行打印出來,通常與–n參數(shù)合用(查)

3. awk

awk是一個(gè)強(qiáng)大的文本分析工具剂跟,相對于grep的查找减途,sed的編輯,awk在其對數(shù)據(jù)分析并生成報(bào)告時(shí)曹洽,顯得尤為強(qiáng)大鳍置。簡單來說awk就是把文件逐行的讀入,以空格為默認(rèn)分隔符將每行切片送淆,切開的部分再進(jìn)行各種分析處理税产。awk有3個(gè)不同版本: awk、nawk和gawk,未作特別說明辟拷,一般指gawk撞羽。gawk 是 AWK 的 GNU 版本。
用法:awk [options] '{script}' file梧兼。

  • options
常見參數(shù) 含義
-F fields放吩,設(shè)置字段(列)分隔符(默認(rèn)是空白字符,也就是空格和\t都會(huì)被分隔羽杰。??cut的分隔只識(shí)別\t)渡紫;
-v var=value 定義awk程序中的一個(gè)變量及其默認(rèn)值
  • script

基礎(chǔ)結(jié)構(gòu): ' {script} '
匹配結(jié)構(gòu): ' /pattern/{script} '
擴(kuò)展結(jié)構(gòu): 'BEGIN{script} {script} END{script}'

awk 在讀取一行文本時(shí),會(huì)用預(yù)定義的字段分隔符劃分每個(gè)數(shù)據(jù)字段考赛,并分配給一個(gè)變量惕澎。
$0 代表整個(gè)文本行;
$1 代表文本行中的第1個(gè)數(shù)據(jù)字段颜骤;
……
$NF 代表文本行中的最后一個(gè)數(shù)據(jù)字段
awk 默認(rèn)的字段分隔符是任意空白字符(如:空格or 制表符)唧喉,也可以用-F 參數(shù)自定義分隔符

  • awk內(nèi)置變量
    FS :定義輸入字段分隔符,F(xiàn)ield Separator忍抽,同–F
    RS :定義輸入記錄分隔符八孝,Record Separator
    OFS :定義輸出字段分隔符,Out Field Separator
    ORS :定義輸出記錄分隔符鸠项,Out Record Separator
    NF :數(shù)據(jù)文件中的字段總數(shù)干跛,可以簡單理解為列數(shù)
    NR :已處理的輸入記錄數(shù),可以簡單理解為行數(shù)
    也可以通過-v 參數(shù)自定義變量或傳遞外部變量

  • awk 條件和循環(huán)語句:
    if:條件判斷
    awk ' { if (判斷條件) {yes} else {no} } '
    for:循環(huán)語句
    awk ' { for (循環(huán)條件) {循環(huán)語句} } '

  • awk 數(shù)學(xué)運(yùn)算:
    +(加)祟绊,-(減)楼入, (乘),^(冪)牧抽,/(除)嘉熊,*(平方),%(取余)
    int(x) x的整數(shù)部分扬舒,取靠近零一側(cè)的值
    log(x) x的自然對數(shù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載阐肤,如需轉(zhuǎn)載請通過簡信或評(píng)論聯(lián)系作者。
  • 序言:七十年代末讲坎,一起剝皮案震驚了整個(gè)濱河市孕惜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌衣赶,老刑警劉巖诊赊,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異府瞄,居然都是意外死亡碧磅,警方通過查閱死者的電腦和手機(jī)碘箍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鲸郊,“玉大人丰榴,你說我怎么就攤上這事「汛椋” “怎么了四濒?”我有些...
    開封第一講書人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長职辨。 經(jīng)常有香客問我盗蟆,道長,這世上最難降的妖魔是什么舒裤? 我笑而不...
    開封第一講書人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任喳资,我火速辦了婚禮,結(jié)果婚禮上腾供,老公的妹妹穿的比我還像新娘仆邓。我一直安慰自己,他們只是感情好伴鳖,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開白布节值。 她就那樣靜靜地躺著,像睡著了一般榜聂。 火紅的嫁衣襯著肌膚如雪搞疗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,696評(píng)論 1 312
  • 那天峻汉,我揣著相機(jī)與錄音贴汪,去河邊找鬼脐往。 笑死休吠,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的业簿。 我是一名探鬼主播瘤礁,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼梅尤!你這毒婦竟也來了柜思?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬榮一對情侶失蹤巷燥,失蹤者是張志新(化名)和其女友劉穎赡盘,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體缰揪,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡陨享,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抛姑。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赞厕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出定硝,到底是詐尸還是另有隱情皿桑,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布蔬啡,位于F島的核電站诲侮,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏箱蟆。R本人自食惡果不足惜浆西,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望顽腾。 院中可真熱鬧近零,春花似錦、人聲如沸抄肖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽漓摩。三九已至裙士,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間管毙,已是汗流浹背腿椎。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留夭咬,地道東北人啃炸。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像卓舵,于是被迫代替她去往敵國和親南用。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容