三、Linux三劍客與管道符

目錄

  • 管道
  • 正則表達式
  • grep
  • sed
  • awk
image.png

一、什么是管道

  • Linux提供管道符“|”將兩個命令隔開拼坎,管道符左邊命令的輸出就會作為管道符右邊命令的輸入
    image.png
  • 示例:echo "hello123" | grep "hello"

二、正則表達式

舉例

  • 找出所有的hi單詞\bhi\b

    image.png

  • hi單詞后面有lucy單詞\bhi\b.*\blucy\b

    image.png

  • 0開頭完疫,然后是兩個數(shù)字泰鸡,然后是一個連字號“_”,最后是8個數(shù)字0\d{2}-\d{8}

    image.png

常用元字符

image.png

常用限定符

image.png

實戰(zhàn)

  • 匹配以字母a開頭的單詞 —— \ba\w*\b
  • 匹配剛好6個字符的單詞 —— \b\w{6}\b
  • 匹配1個或更多連續(xù)的數(shù)字 —— \d+
  • 5位到12位QQ號 —— ^\d{5,12}$

三壳鹤、grep命令

定義

  • 根據(jù)用戶指定的模式(pattern) 對目標文本進行過濾盛龄,顯示被模式匹配到的行

命令形式

  • grep [OPTIONS] PATTERN [FILE...]

選項

  • -v顯示不被pattern匹配到的行
  • -i忽略字符大小寫
  • -n顯示匹配的行號
  • -c統(tǒng)計匹配的行數(shù)
  • -o僅顯示匹配到的字符串
  • -E使用ERE,相當于egrep

實戰(zhàn)1

  • 查找文件內(nèi)容包含root的行數(shù)
    • grep -n root test.txt
  • 查找文件內(nèi)容不包含root的行
    • grep -nv root test.txt
  • test.txt 內(nèi)容


    image.png
  • 實戰(zhàn)


    image.png

實戰(zhàn)2-使用正則

image.png

四芳誓、sed 命令

定義

  • sed是流編輯器余舶,一次處理一行內(nèi)容


    image.png
  1. 將行存儲在模式空間
  2. sed命令進行處理
  3. 送入屏幕
  4. 清空模式空間
  5. 重復1-4直到所有行被處理完

命令形式

  • sed [-hn..][-e<script>][-f<script FILE>][FILE]

命令解析

  • sed [-hn.][-e<script>][-f<script文件>][文本文件]

    • -h顯示幫助
    • -n僅顯示script處理后的結果
  • sed [-hnV][-e<script>][-f<script文件>][文本文件]

    • -e<script> 以選項中指定的script來處理輸入的文本文件
    • -f<script文件> 以選項中指定的script文件來處理輸入的文本文件

常用動作

  • a:新增 sed -e '4 a newline':在第四行后面新增一行“newline”
  • c:取代 sed -e '2,5c No 2-5 number':用c后面的內(nèi)容“No 2-5 number”取代2-5行的內(nèi)容
  • d:刪除 sed -e '2,5d':刪除2-5行
  • i:插入 sed -e '2i newline':在第二行前面插入一行“newline”
  • p:打印 sed -n '/root/p':打印匹配到root規(guī)則的內(nèi)容,/之間的內(nèi)容是使用正則
  • s:取代 sed -e 's/old/new/g':后面的內(nèi)容new取代前面的內(nèi)容old锹淌,g代表全局global

實戰(zhàn)1

  • 查看幫助
    • man sed
      image.png
      • k:往上翻
      • j:往下翻
      • /內(nèi)容:查找指定內(nèi)容
      • n:查找下一個匹配到的內(nèi)容
      • N:查找上一個匹配到的內(nèi)容
    • sed -h
  • 在第四行后添加新字符串
    • sed -e '4 a newline testfile' test.txt

-e可以省略

實戰(zhàn)2

  • 在第二行后加上newline
    • sed '2a drink tea' test.txt
  • 在第二行前加上newline
    • sed '2i drink tea' test.txt
      image.png

實戰(zhàn)3

  • 全局替換
    • sed -e 's/root/hello/g' test.txt
  • 直接修改文件內(nèi)容
    • sed -i 's/root/hello/g' test.txt
      image.png

注意點

  • sed不會修改原文件匿值,只會在模式空間中修改


    image.png
  • 要修改原文件需要加上-i參數(shù),這里的-i與常用動作中的i不是一回事

    image.png

五葛圃、awk 命令

定義

  • 把文件逐行的讀入千扔,以空格為默認分隔符將每行切片,切開的部分再進行后續(xù)處理


    image.png
  1. 將第一行作為輸入,并賦值給內(nèi)置變量$0
  2. 進行切段库正,比如hello hello hello通過空格進行切段曲楚,第一段為$1,第二段為$2褥符,以此類推
  3. 對行匹配進行正則或執(zhí)行其他動作
  4. 打印內(nèi)容
  5. 讀取第二行內(nèi)容龙誊,重復1-4步驟

命令形式

  • awk 'pattern + action' [FILE]

命令解析

  • awk 'pattern + action' [filenames]
    • -pattern正則表達式
    • -action對匹配到的內(nèi)容執(zhí)行的命令(默認為輸出每行內(nèi)容)

常用參數(shù)

  • FILENAME awk瀏覽的文件名
  • BEGIN處理文本之前要執(zhí)行的操作
  • END處理文本之后要執(zhí)行的操作
  • FS設置輸入域分隔符,等價于命令行-F選項喷楣,默認為空格
  • NF瀏覽記錄的域的個數(shù)(列數(shù))
  • NR已讀的記錄數(shù)(行數(shù))
  • OFS輸出域分隔符
  • ORS輸出記錄分隔符
  • RS控制記錄分隔符趟大,指定換行符,默認為\n
  • $0整條記錄
  • $1表示當前行的第一1 個域...以此類推

實戰(zhàn)1

  • 搜索/etc/passwd有root關鍵字的所有行铣焊,并顯示對應的shell
    • awk -F: '/root/{print $7}' /etc/passwd
  • 打印/etc/passwd/的第二行信息
    • awk -F: 'NR==2{print $0}' /etc/passwd
      image.png

實戰(zhàn)2

  • 使用begin加入標題

    • awk ‘BEGIN {print“BEGIN”,“BEGIN”}{print $1,$2}' /etc/passwd
      image.png
  • 自定義分割符

    • echo "111 222|333 444|555 666" | awk 'BEGIN{RS="l"}{print $0}'
      image.png
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末逊朽,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子曲伊,更是在濱河造成了極大的恐慌叽讳,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坟募,死亡現(xiàn)場離奇詭異岛蚤,居然都是意外死亡,警方通過查閱死者的電腦和手機懈糯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門涤妒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人赚哗,你說我怎么就攤上這事她紫。” “怎么了屿储?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵犁苏,是天一觀的道長。 經(jīng)常有香客問我扩所,道長围详,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任祖屏,我火速辦了婚禮助赞,結果婚禮上,老公的妹妹穿的比我還像新娘袁勺。我一直安慰自己雹食,他們只是感情好,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布期丰。 她就那樣靜靜地躺著群叶,像睡著了一般吃挑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上街立,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天舶衬,我揣著相機與錄音,去河邊找鬼赎离。 笑死逛犹,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的梁剔。 我是一名探鬼主播虽画,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼荣病!你這毒婦竟也來了码撰?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤个盆,失蹤者是張志新(化名)和其女友劉穎灸拍,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體砾省,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡鸡岗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了编兄。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片轩性。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖狠鸳,靈堂內(nèi)的尸體忽然破棺而出揣苏,到底是詐尸還是另有隱情,我是刑警寧澤件舵,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布卸察,位于F島的核電站,受9級特大地震影響铅祸,放射性物質發(fā)生泄漏坑质。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一临梗、第九天 我趴在偏房一處隱蔽的房頂上張望涡扼。 院中可真熱鬧,春花似錦盟庞、人聲如沸吃沪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽票彪。三九已至红淡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間降铸,已是汗流浹背在旱。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留垮耳,地道東北人颈渊。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓遂黍,卻偏偏與公主長得像终佛,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子雾家,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351

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