日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux之shell快速入门系列<8> | shell工具cut、sed、awk、sort

發(fā)布時間:2023/12/10 linux 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux之shell快速入门系列<8> | shell工具cut、sed、awk、sort 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

shell工具cut、sed、awk、sort

文章目錄

  • shell工具cut、sed、awk、sort
  • 1、cut
  • 2、sed
  • 3、awk
  • 4、sort

1、cut

描述:

cut的工作就是“剪”,具體的說就是在文件中負(fù)責(zé)剪切數(shù)據(jù)用的。cut 命令從文件的每一行剪切字節(jié)、字符和字段并將這些字節(jié)、字符和字段輸出。

  • 基本用法
  • cut [選項參數(shù)] filename

    說明:默認(rèn)分隔符是制表符

  • 選項參數(shù)說明

    項參數(shù)功能
    -f列號,提取第幾列
    -d分隔符,按照指定分隔符分割列
  • 操作案例:
    (0)數(shù)據(jù)準(zhǔn)備

    [root@bigdata01 centos-shell]# cat cut.txt chen wei ting xu ya dong zhong guan cun bei jing shi xie ting feng wang ya li

    (1)切割cut.txt第一列

    [root@bigdata01 centos-shell]# cut -d " " -f 1 cut.txt chen xu zhong bei xie wang

    (2)切割cut.txt第二、三列

    [root@bigdata01 centos-shell]# cut -d " " -f 2,3 cut.txt wei ting ya dong guan cun jing shi ting feng ya li

    (3)在cut.txt文件中切割出guan

    [root@bigdata01 centos-shell]# cat cut.txt | grep "xie" | cut -d " " -f 1 xie

    (4)選取系統(tǒng)PATH變量值,第15個“:”開始后的所有路徑:

    [root@bigdata01 centos-shell]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/module/ jdk1.8.0_171/bin:/opt/module/jdk1.8.0_171/jre/bin:/opt/module/ hadoop-2.7.2/bin:/opt/module/hadoop-2.7.2/sbin:/opt/module/ hbase-2.0.3/bin:/opt/module/sqoop/bin:/opt/module/zookeeper- 3.4.5/bin:/opt/module/kafka/bin:/opt/module/flume/bin:/opt/ module/hive/bin:/opt/module/jdk1.8.0_171/bin:/opt/module/ jdk1.8.0_171/jre/bin:/opt/module/hadoop-2.7.2/bin:/opt/ module/hadoop-2.7.2/sbin:/opt/module/hbase- 2.0.3/bin:/opt/module/sqoop/bin:/opt/module/zookeeper- 3.4.5/bin:/opt/module/kafka/bin:/opt/module/flume/ bin:/opt/module/hive/bin:/root/bin[root@bigdata01 centos-shell]# echo $PATH | cut -d: -f 15- /opt/module/jdk1.8.0_171/bin:/opt/module/jdk1.8.0_171/jre/bin:/opt/ module/hadoop-2.7.2/bin:/opt/module/hadoop-2.7.2/sbin:/opt/module/hbase- 2.0.3/bin:/opt/module/sqoop/bin:/opt/module/zookeeper- 3.4.5/bin:/opt/module/kafka/bin:/opt/module/flume/bin:/opt/ module/hive/bin:/root/bin
  • 2、sed

    sed是一種流編輯器,它一次處理一行內(nèi)容。處理時,把當(dāng)前處理的行存儲在臨時緩沖區(qū)中,稱為“模式空間”,接著用sed命令處理緩沖區(qū)中的內(nèi)容,處理完成后,把緩沖區(qū)的內(nèi)容送往屏幕。接著處理下一行,這樣不斷重復(fù),直到文件末尾。文件內(nèi)容并沒有改變,除非你使用重定向存儲輸出。

  • 基本用法

    sed [選項參數(shù)] ‘command’ filename

  • 選項參數(shù)說明

    項參數(shù)功能
    -e直接在指令列模式上進(jìn)行sed的動作編輯
  • 命令功能描述

    命令功能描述
    a新增,a的后面可以接字串,在下一行出現(xiàn)
    d刪除
    s查找并替換
  • 案例操作
    (0)數(shù)據(jù)準(zhǔn)備

    [root@bigdata01 centos-shell]# cat cut.txt chen wei ting xu ya dong zhong guan cun bei jing shi xie ting feng wang ya li

    (1)將“mei nv”這個單詞插入到sed.txt第二行的下一行,打印。

    [root@bigdata01 centos-shell]# sed '2a mei mei' sed.txt chen wei ting xu ya dong mei mei zhong guan cun bei jing shi xie ting feng wang ya li[root@bigdata01 centos-shell]# cat sed.txt chen wei ting xu ya dong zhong guan cun bei jing shi xie ting feng wang ya li\

    注意:文件并沒有改變

    (2)刪除sed.txt文件所有包含wo的行

    [root@bigdata01 centos-shell]# sed '/wang/d' sed.txt chen wei ting xu ya dong zhong guan cun bei jing shi xie ting feng

    (3)將sed.txt文件中wo替換為ni

    [root@bigdata01 centos-shell]# sed 's/wang/xu/g' sed.txt chen wei ting xu ya dong zhong guan cun bei jing shi xie ting feng xu ya li

    注意:‘g’表示global,全部替換

  • 3、awk

    一個強大的文本分析工具,把文件逐行的讀入,以空格為默認(rèn)分隔符將每行切片,切開的部分再進(jìn)行分析處理。

  • 基本用法
  • awk [選項參數(shù)] ‘pattern1{action1} pattern2{action2}…’ filename
    pattern:表示AWK在數(shù)據(jù)中查找的內(nèi)容,就是匹配模式
    action:在找到匹配內(nèi)容時所執(zhí)行的一系列命令

  • 選項參數(shù)說明

    選項參數(shù)功能
    -F指定輸入文件折分隔符
    -v賦值一個用戶定義變量
  • 案例實操
    (0)數(shù)據(jù)準(zhǔn)備

    [root@bigdata01 centos-shell]# vi awk.txt [root@bigdata01 centos-shell]# cat awk.txt root 1 work blask dadf fdafd gerq qefad fdae root 2 fdaqe eqfda fqef eqf fqdf 89 fefq root 3 fadff fqfda qfda efqdad ef 98455 efad root 4 dfaf efda efad fadfdq feghy 89413 efqe

    (1)搜索awk.txt文件以root關(guān)鍵字開頭的所有行,并輸出該行的第5列。

    [root@bigdata01 centos-shell]# awk -F " " '/^root/{print $5}' awk.txt /bin/bash dadf fqef qfda efad

    (2)搜索awk.txt文件以root關(guān)鍵字開頭的所有行,并輸出該行的第3列和第6列,中間以“,”號分割。

    [root@bigdata01 centos-shell]# awk -F " " '/^root/{print $2","$6}' awk.txt /bin/bash hello,fdafd opfa,eqf cxae,efqdad dace,fadfdq

    注意:只有匹配了pattern的行才會執(zhí)行action

    (3) 將awk.txt文件中的用戶id增加數(shù)值1并輸出

    [root@bigdata01 centos-shell]# awk -v i=1 -F " " '{print $2+i}' awk.txt 2 3 4 5
  • awk的內(nèi)置變量

    變量說明
    FILENAME文件名
    NR已讀的記錄數(shù)
    NF瀏覽記錄的域的個數(shù)(切割后,列的個數(shù))
  • 案例實操
    (1)統(tǒng)計awk.txt文件名,每行的行號,每行的列數(shù)

    [root@bigdata01 centos-shell]# awk -F " " '{print "filename:" FILENAME ", linenumber:" NR ",columns:" NF}' awk.txt filename:awk.txt, linenumber:1,columns:9 filename:awk.txt, linenumber:2,columns:9 filename:awk.txt, linenumber:3,columns:9 filename:awk.txt, linenumber:4,columns:9

    (2) 查詢sed.txt中空行所在的行號

    [root@bigdata01 centos-shell]# awk '/^$/{print NR}' sed.txt 2 5
  • 4、sort

    sort命令是在Linux里非常有用,它將文件進(jìn)行排序,并將排序結(jié)果標(biāo)準(zhǔn)輸出。

  • 基本語法
    sort(選項)(參數(shù))

    選項說明
    -n依照數(shù)值的大小排序
    -r以相反的順序來排序
    -t設(shè)置排序時所用的分隔字符
    -k指定需要排序的列

    參數(shù):指定待排序的文件列表

  • 案例實操
    (0)數(shù)據(jù)準(zhǔn)備

    [root@bigdata01 centos-shell]# vi sort.sh bb:40:5.4 bd:20:4.2 xz:50:2.3 cls:10:3.5 ss:30:1.6

    (1)按照“:”分割后的第三列倒序排序。

    [root@bigdata01 centos-shell]# sort -t : -nrk 3 sort.sh bb:40:5.4 bd:20:4.2 cls:10:3.5 xz:50:2.3 ss:30:1.6
  • 總結(jié)

    以上是生活随笔為你收集整理的linux之shell快速入门系列<8> | shell工具cut、sed、awk、sort的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。