linux之shell快速入门系列<8> | shell工具cut、sed、awk、sort
shell工具cut、sed、awk、sort
文章目錄
- shell工具cut、sed、awk、sort
- 1、cut
- 2、sed
- 3、awk
- 4、sort
1、cut
描述:
cut的工作就是“剪”,具體的說就是在文件中負責剪切數據用的。cut 命令從文件的每一行剪切字節、字符和字段并將這些字節、字符和字段輸出。
cut [選項參數] filename
說明:默認分隔符是制表符
選項參數說明
| -f | 列號,提取第幾列 |
| -d | 分隔符,按照指定分隔符分割列 |
操作案例:
(0)數據準備
(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)選取系統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/bin2、sed
sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”,接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有改變,除非你使用重定向存儲輸出。
基本用法
sed [選項參數] ‘command’ filename
選項參數說明
| -e | 直接在指令列模式上進行sed的動作編輯 |
命令功能描述
| a | 新增,a的后面可以接字串,在下一行出現 |
| d | 刪除 |
| s | 查找并替換 |
案例操作
(0)數據準備
(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
一個強大的文本分析工具,把文件逐行的讀入,以空格為默認分隔符將每行切片,切開的部分再進行分析處理。
awk [選項參數] ‘pattern1{action1} pattern2{action2}…’ filename
pattern:表示AWK在數據中查找的內容,就是匹配模式
action:在找到匹配內容時所執行的一系列命令
選項參數說明
| -F | 指定輸入文件折分隔符 |
| -v | 賦值一個用戶定義變量 |
案例實操
(0)數據準備
(1)搜索awk.txt文件以root關鍵字開頭的所有行,并輸出該行的第5列。
[root@bigdata01 centos-shell]# awk -F " " '/^root/{print $5}' awk.txt /bin/bash dadf fqef qfda efad(2)搜索awk.txt文件以root關鍵字開頭的所有行,并輸出該行的第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的行才會執行action
(3) 將awk.txt文件中的用戶id增加數值1并輸出
[root@bigdata01 centos-shell]# awk -v i=1 -F " " '{print $2+i}' awk.txt 2 3 4 5awk的內置變量
| FILENAME | 文件名 |
| NR | 已讀的記錄數 |
| NF | 瀏覽記錄的域的個數(切割后,列的個數) |
案例實操
(1)統計awk.txt文件名,每行的行號,每行的列數
(2) 查詢sed.txt中空行所在的行號
[root@bigdata01 centos-shell]# awk '/^$/{print NR}' sed.txt 2 54、sort
sort命令是在Linux里非常有用,它將文件進行排序,并將排序結果標準輸出。
基本語法
sort(選項)(參數)
| -n | 依照數值的大小排序 |
| -r | 以相反的順序來排序 |
| -t | 設置排序時所用的分隔字符 |
| -k | 指定需要排序的列 |
參數:指定待排序的文件列表
案例實操
(0)數據準備
(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總結
以上是生活随笔為你收集整理的linux之shell快速入门系列<8> | shell工具cut、sed、awk、sort的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 判断两个数是否异号
- 下一篇: (视频) 《快速创建网站》 3.2 Wo