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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

正则表达式(grep命令,egrep命令,sed命令,awk命令,sort工具,uniq工具)

發布時間:2024/2/28 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 正则表达式(grep命令,egrep命令,sed命令,awk命令,sort工具,uniq工具) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 正則表達式
    • 基礎正則表達式:grep命令
    • 查找行首“^”與行尾字符“$
    • 查找連續字符范圍{}
    • 元字符總結
    • 正則表達式總結
  • 擴展正則表達式
    • egrep命令
  • sed工具使用方法
    • sed工具概述
    • sed的工作流程
    • 常見的sed命令選項
    • 常見的操作
    • 刪除符合條件的文本(d)
    • 替換符合條件的文本
    • **遷移符合條件的文本**
    • 使用腳本編輯文件
    • sed 直接操作文件示例
  • awk工具使用方法
    • sort工具
    • uniq工具
    • tr工具

正則表達式

基礎正則表達式:grep命令

-i”表示不區分大小寫

-n”表示顯示行號

若反向選擇,如查找不包含“the”字符的行,則需要通過grep命令的“-v”選項實現,并配合“-n”一起使用顯示行號。

(1) 利用中括號“[]”來查找集合字符

想要查找“shirt”與“short”這兩個字符串時,可以發現這兩個字符串均包含“sh” 與“rt”“[]”中無論有幾個字符,都僅代表一個字符,也就是說“[io]”表示匹配“i”或者“o”同時查找到“shirt”與“short”這兩個字符串 [root@localhost opt]# echo "shirt" >> /opt/httpd.txt [root@localhost opt]# echo "short" >> /opt/httpd.txt [root@localhost opt]# echo "shart" >> /opt/httpd.txt [root@localhost ~]# grep -n 'sh[ioa]rt' /etc/passwd

若要查找包含重復單個字符“oo”時,只需要執行以下命令即可。

查找行首“^”與行尾字符“$

基礎正則表達式包含兩個定位元字符:“^”(行首)與“$”(行尾)

“^”符號在元字符集合“[]”符號內外的作用是不一樣的,在“[]”符號內表示反向選擇,在“[]”符號外則代表定位行首

若想查找以某一特定字符結尾的行則可以使用“$”定位符

查詢以“the”字符串為行首的行

若查找“oo”前面不是“w”的字符串,只需要通過集合字符的反向選擇“[^]”來實現該目的

“a-z”表示小寫字母,大寫字母則通過“A-Z”表示。

若不希望“oo”前面存在小寫字母,可以使用“grep -n[^a-z]oo’test.txt”命令實現

查找包含數字的行可以通過*grep -n‘[0-9]’test.txt命令來實現。

開頭為0-9的

查詢以小寫字母開頭的行可以通過[a-z]規則來過濾,查詢大寫字母開頭的行則使用[A-Z]”規則,若查詢不以字母開頭的行則使用“[a-zA-Z]”規則。

因為小數點(.)在正則表達式中也是一個元字符(后面會講到),所以在這里需要用轉義字符“\”將具有特殊意義的字符轉化成普通字符。

查詢以小數點(.)結尾的行 [root@localhost opt]# grep -n ‘.$’ httpd.txt

當查詢空白行時,執行grep -n‘^$’test.txt命令即可。

(1) 查找任意一個字符".“與重復字符”*"

表示固定字符

“*”代表的是重復零個或多個前面的單字符

“o”表示擁有零個(即為空字符)或大于等于一個“o”的字符*

執行以下命令即可查詢以 w 開頭 d 結尾,中間的字符可有可無的字符串

“oo*”, 則第一個 o 必須存在,第二個 o 則是零個或多個 o,所以凡是包含 o、oo、ooo、ooo,等的資料都符合標準

查詢以 w 開頭 d 結尾,中間包含至少一個 o 的字符串,執行以下命令即可實現。

執行以下命令即可查詢任意數字所在行。

查找連續字符范圍{}

在上面的示例中,使用了“.”與“*”來設定零個到無限多個重復的字符,如果想要限制一個范圍內的重復的字符串該如何實現呢?例如,查找三到五個 o 的連續字符,這個時候就需要使用基礎正則表達式中的限定范圍的字符“{}”。因為“{}”在 Shell 中具有特殊意義,所以在使用“{}”字符時,需要利用轉義字符“\”,將“{}”字符轉換成普通字符。“{}”字符的使用方法如下所示。

查詢兩個或以上 o 的字符

查詢以 w 開頭以 d 結尾,中間包含 2~5 個 o 的字符串。

查詢以 w 開頭以 d 結尾,中間包含 2 以上 o 的字符串

元字符總結

元字符作用
^匹配輸入字符串的開始位置
$匹配輸入字符串的結尾位置
.匹配除“\r\n”之外的任何單個字符
\將下一個字符標記為特殊字符、原義字符、向后引用、八進制轉義符。例如,‘n’匹配字符“n”。 ‘\n’匹配換行符。序列‘\ \’匹配“\”,而‘\ (’則匹配“(”
*匹配前面的子表達式零次或多次。要匹配“*”字符,請使用“\ *”
[]字符集合。匹配所包含的任意一個字符。例如,“[abc]”可以匹配“plain”中的“a”
[^]賦值字符集合。匹配未包含的一個任意字符。例如,“[ ^abc ] ”可以匹配“plain”中“plin”中的任何一個字母
[n1-n2]字符范圍。匹配指定范圍內的任意一個字符。例如,“[a-z]”可以匹配“a”到“z”范圍內的任意一個小寫字母字符。注意:只有連字符(-)在字符組內部,并且出現在兩個字符之間時,才能表示字符的范圍;如果出現在字符組的開頭,則只能表示連字符本身
{n}n 是一個非負整數,匹配確定的 n 次。例如,“o\ {2\ }”不能匹配“Bob”中的“o”,但是能匹配“food”中的兩個 o
{n,}n 是一個非負整數,至少匹配 n 次。例如,“o\ {2,\ }”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有 o。“o\ {1,\ }”等價于“o+”。“o\ {0,\ }”則等價于“o*”
{n,m}m 和n 均為非負整數,其中 n<=m,最少匹配 n 次且最多匹配 m 次

正則表達式總結

命令基本格式 grep -cinvABC 'word' filename -c '行數'-i '不區分大小寫'-n '顯示行號'-v '取反'-r '遍歷所有子目錄'-A '后面跟數字,過濾出符合要求的行以及下面n行'-B '同上,過濾出符合要求的行以及上面n行'-C '同上,同時過濾出符合要求的行以及上下各n行'

擴展正則表達式

egrep命令

通常情況下會使用基礎正則表達式就已經足夠了,但有時為了簡化整個指令,需要使用范圍更廣的擴展正則表達式。

元字符作用與示例
+作用:重復一個或者一個以上的前一個字符 示例:執行“egrep -n ‘wo+d’ test.txt”命令,即可查詢"wood" “woood” "woooooood"等字符串
作用:零個或者一個的前一個字符 示例:執行“egrep -n ‘bes?t’ test.txt”命令,即可查詢“bet”“best”這兩個字符串
|作用:使用或者(or)的方式找出多個字符 示例:執行“egrep -n ‘of
()作用:查找“組”字符串 示例:“egrep -n ‘t(a
()+作用:辨別多個重復的組 示例:“egrep -n ‘A(xyz)+C’ test.txt”。該命令是查詢開頭的"A"結尾是"C",中間有一個以上的 "xyz"字符串的意思

示例:“egrep -n ‘A(xyz)+C’ test.txt”。該命令是查詢開頭的"A"結尾是"C",中間有一個以上的"xyz"字符串的意思

+ 作用:重復一個或者一個以上的前一個字符

示例:執行“egrep -n ‘wo+d’ test.txt”命令,即可查詢"wood" “woood” "woooooood"等字符串

? 作用:零個或者一個的前一個字符

查看is|or|the ; 使用|或者(or)的方式找出多個字符

sed工具使用方法

sed工具概述

sed(Stream EDitor)是一個強大而簡單的文本解析轉換工具,可以讀取文本,并根據指定的條件對文本內容進行編輯(刪除、替換、添加、移動等),最后輸出所有行或者僅輸出處理的某些行。
sed 也可以在無交互的情況下實現相當復雜的文本處理操作,被廣泛應用于 Shell 腳本中,用以完成各種自動化處理任務。

sed的工作流程

讀取——》執行——》顯示三個過程

在所有的文件內容都被處理完成之前,上述過程將重復執行,直至所有內容被處理完

默認情況下,所有的 sed 命令都是在模式空間內執行的,因此輸入的文件并不會發生任何變化,除非是用重定向存儲輸出

讀取

默認情況下,所有的 sed 命令都在模式空間中順序地執行,除非指定了行的地址,否則 sed 命令將會在所有的行上依次執行

執行

默認情況下,所有的 sed 命令都在模式空間中順序地執行,除非指定了行的地址,否則 sed 命令將會在所有的行上依次執行

顯示

發送修改后的內容到輸出流。再發送數據后,模式空間將會被清空。

通常情況下調用 sed 命令有兩種格式

sed[選項] '操作' 參數 sed [選項] -f scriptfile 參數

常見的sed命令選項

選項解釋
-e 或–expression=表示用指定命令或者腳本來處理輸入的文本文件
-f 或–file=表示用指定的腳本文件來處理輸入的文本文件
-h 或–help顯示幫助
-n、–quiet 或 silent表示僅顯示處理后的結果
-i直接編輯文本文件,直接編輯源文件

常見的操作

操作解釋
a增加,在當前行下面增加一行指定內容
c替換,將選定行替換為指定內容
d刪除,刪除選定的行
i插入,在選定行上面插入一行指定內容
p打印,如果同時指定行,表示打印指定行;如果不指定行,則表示打印所有內容;如果有非打印字符,則以 ASCII 碼輸出。其通常與“-n”選項一起使用
s替換,替換指定字符
y字符轉換

*用法示例*

[root@localhost opt]# sed -n 'p' a.txt //輸出所有內容,1234567890[root@localhost opt]# sed -n '2p' a.txt //輸出第 2 行1[root@localhost opt]# sed -n '3,5p' a.txt //輸出 3~5 行234[root@localhost opt]# sed -n 'p;n' a.txt //輸出所有奇數行,n 表示讀入下一行資料24680[root@localhost opt]# sed -n 'n;p' a.txt //輸出所有偶數行,n 表示讀入下一行資料13579[root@localhost opt]# sed -n '1,5{p;n}' a.txt //輸出第 1~5 行之間的奇數行(第 1、3、5 行)135[root@localhost opt]# sed -n '1,5{n;p}' a.txt //輸出第 5行至文件尾之間的偶數行24 6[root@localhost opt]# sed -n '/the/p' a.txt //輸出包含the 的行the thisthis the[root@localhost opt]# sed -n '2,/the/p' a.txt //輸出從第 2行至第一個包含 the 的行234567the this[root@localhost opt]# sed -n '/the/=' a.txt //輸出包含the 的行所在的行號,等號(=)用來輸出行號810

[root@192 ~]# sed -n ‘/[0-9]/p’ /opt/httpd.txt 輸出以數字

以0-9開頭的或結尾的[root@localhost opt]# sed -n '/^[0-9]/p' httpd.txt 123456789[root@localhost opt]# sed -n '/[0-9]$/p' httpd.txt //輸出以數字結尾的行 \#Listen 12.34.56.78:80Listen 80\#ServerName www.example.com:80AddDefaultCharset UTF-812345678?4567899

//輸出包含單詞wood 的行,<、>代表單詞邊界

刪除符合條件的文本(d)

下面命令中 nl 命令用于計算文件的行數,結合該命令可以更加直觀地查看到命令執行的結果。[root@localhost opt]# nl a.txt ? 1 1? 2 2? 3 3? 4 4? 5 5? 6 6? 7 7? 8 the this? 9 8? 10 this the? 11 9? 12 0[root@localhost opt]# nl a.txt | sed '3d' //刪除第 3 行 不會影響源文件? 1 1? 2 2? 4 4? 5 5? 6 6? 7 7? 8 the this? 9 8? 10 this the? 11 9? 12 0[root@localhost opt]# nl a.txt | sed '3,$d' //刪除第 3 以后的行? 1 1? 2 2[root@localhost opt]# nl a.txt | sed '/the/d' //刪除the的行? 1 1? 2 2? 3 3? 4 4? 5 5? 6 6? 7 7? 9 8? 11 9? 12 0[root@localhost opt]# sed '/\.$/d' httpd.txt //刪除以"."結尾的行\#\# This is the main Apache HTTP server configuration file. It contains the\# In particular, see \# <URL:http://httpd.apache.org/docs/2.4/mod/directives.html>\#\# Do NOT simply read the instructions in here without understanding\# what they do. They're here only as hints or reminders. If you are unsure[root@localhost opt]# sed '/^$/d' httpd.txt //刪除所有空行\#\# This is the main Apache HTTP server configuration file. It contains the\# configuration directives that give the server its instructions.\# See <URL:http://httpd.apache.org/docs/2.4/> for detailed information.\# In particular, see \# <URL:http://httpd.apache.org/docs/2.4/mod/directives.html>\# for a discussion of each configuration directive.

替換符合條件的文本

[root@localhost opt]# cat a.txt 1234567the this8this the90[root@localhost opt]# sed 's/the/THE/' a.txt //將每行中的第一個the 替換為 THE1234567THE this8this THE90[root@localhost opt]# sed 's/l/L/3' a.txt //將每行中的第 3 個 l 替換為 L1 234567the thistollLlllk8this the90[root@localhost opt]# sed 's/l//g' a.txt //將文件中的所有 l 刪除(替換為空串)1 234567the thistok8this the90[root@localhost opt]# sed 's/^/#/' a.txt //在每行行首插入#號\#1 \#2\#3\#4\#5\#6\#7\#the this\#tollllllk\#8\#this the\#9\#0[root@localhost opt]# sed '/the/s/^/#/' a.txt //在包含the 的每行行首插入#號1234567\#the thistollllllk8\#this the90[root@localhost opt]# sed 's/l/#/g' a.txt 把l替換成#1234567the thisto######k8this the90

遷移符合條件的文本

在使用 sed 命令遷移符合條件的文本時,常用到以下參數.

H:復制到剪貼板;

g、G:將剪貼板中的數據覆蓋/追加至指定行;

w:保存為文件;

r:讀取指定文件;

a:追加指定內容。

[root@localhost opt]# sed '/the/{H;d};12G' a.txt //將第 the行內容轉移至第 17 行后1234567tollllllk89the thisthis the0[r[root@localhost opt]# sed '/the/{H;d};$G' a.txt //將包含the 的行遷移至文件末尾,{;}用于多個操作1234567tollllllk890the thisthis the[root@localhost opt]# sed '1,3{H;d};$G' a.txt //將第 1~3 行內容轉移至末尾4567the thistollllllk8this the90123[root@localhost opt]# sed '/the/w out.txt' a.txt //將文件 out.txt 的內容添加到包含 the 的每行以后1234567the thistollllllk8this the90[root@localhost opt]# lsout.txt[root@localhost opt]# cat out.txt the thisthis the\----------------------------------------[root@localhost opt]# vim b.txt 123456[root@localhost opt]# sed '/the/r b.txt' a.txt //在包含the 的每行后插入一個新行,內容為 1234561234567the this123456tollllllk8this the12345690[root@localhost opt]# sed '3aNEW' a.txt //在第 3 行后插入一個新行,內容為New123NEW4567the thistollllllk8this the90[root@localhost opt]# sed '/the/aNEW' a.txt //在包含the 的每行后插入一個新行,內容為 New1234567the thisNEWtollllllk8this theNEW90[root@192 ~]# sed '3aNEW\nNWE2\nNEW3' a.txt //在第 3 行后插入多行內容,中間的\n 表示換行123NEWNWE2NEW34567the thisNEWtollllllk8this theNEW90

使用腳本編輯文件

[root@192 ~]# vim opt.zhang將第 1~3行內容轉移至第 12 行后1,3H1,3d12G[root@192 ~]# sed -f opt.zhang a.txt 4567the thisNEWtollllllk8this the123NEW90

sed 直接操作文件示例

  • 編寫一個腳本,用來調整 vsftpd 服務配置:禁止匿名用戶,但允許本地用戶(也允許寫入)
**(1)** **sed** **直接操作文件示例**編寫一個腳本,用來調整 vsftpd 服務配置,要求禁止匿名用戶,但允許本地用戶(也允許寫入)。root@localhost ~]# **vim local_only_ftp.sh**\#!/bin/bash\# 指定樣本文件路徑、配置文件路徑SAMPLE="/usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/vsftpd.conf " CONFIG="/etc/vsftpd/vsftpd.conf"\# 備份原來的配置文件,檢測文件名為/etc/vsftpd/vsftpd.conf.bak 備份文件是否存在, 若不存在則使用 cp 命令進行文件備份[ ! -e "$CONFIG.bak" ] && cp $CONFIG $CONFIG.bak # 基于樣本配置進行調整,覆蓋現有文件 -e判斷是否存在不存這拷貝sed -e '/^anonymous_enable/s/YES/NO/g' $SAMPLE > $CONFIG g是替換sed -i -e '/^local_enable/s/NO/YES/g' -e '/^write_enable/s/NO/YES/g' $CONFIG grep "listen" $CONFIG || sed -i '$alisten=YES' $CONFIG i直接編輯 -e 跟多條語句 grep "listen" $CONFIG || sed -i '$alisten=YES' $CONFIGa 是\# 啟動vsftpd 服務,并設為開機后自動運行systemctl restart vsftpd systemctl enable vsftpd[root@localhost ~]# **chmod +x local_only_ftp.sh

awk工具使用方法

1. awk 常見用法

通常情況下 awk 所使用的命令格式如下所示,其中,單引號加上大括號“{}”用于設置對數據進行的處理動作。awk 可以直接處理目標文件,也可以通過“-f”讀取腳本對目標文件進行處理。

awk 選項 **’**模式或條件 {編輯指令}’ 文件 1 文件 2 … //過濾并輸出文件中符合條件的內容

awk -f 腳本文件 文件 1 文件 2 … //從腳本中調用編輯指令,過濾并輸出內容

-f 且默認情況下字段的分隔符為空格或 tab 鍵

[root@localhost ~]# **awk -F ':' '{print $1,$3,$4}' /etc/passwd**root 0 0bin 1 1daemon 2 2

……//省略部分內容

用$1、$2、$3…順序地表示行(記錄)中的不同字段,另外 awk 用$0 表示整個行(記錄)

在上述示例中,awk 命令對/etc/passwd 文件的處理過程如圖

FS:指定每行文本的字段分隔符,默認為空格或制表位(等于-F) NF:當前處理的行的字段個數 NR:當前處理的行的行號(序數) $0:當前處理的行的整行內容 $n:當前處理行的第n個字段(第n列) FILENAME:被處理的文件名 RS:數據記錄分隔,默認為\n,即每行為一條記錄

awk ‘{print}’ test.txt //輸出所有內容,等同于 cat test.txt

輸出第 1~3 行內容

awk 'NR==1||NR==3{print}' /etc/passwd** //輸出第 1 行、第 3 行內容[root@192 ~]# awk 'NR==1,NR==3{print}' /etc/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologin[root@192 ~]# awk -F ":" 'NR==1,NR==3{print $1,$3}' /etc/passwd 輸出1到3行的1到3列字段root 0bin 1daemon 2[root@192 ~]# awk -F ":" '(NR>=1)&&(NR<=3){print $1,$3}' /etc/passwdroot 0bin 1daemon 2[root@192 ~]# awk -F ":" 'NR>=1&&NR<=3{print $1,$3}' /etc/passwdroot 0bin 1daemon 2[root@192 ~]# awk -F ":" 'NR==1||NR==3{print $1,$3}' /etc/passwd 只輸出1和3行root 0daemon 2[root@192 ~]# awk -F ":" 'NR%2==1{print $1,$3}' /etc/passwd //輸出所有奇數行的內容root 0daemon 2lp 4shutdown 6mail 8games 12nobody 99dbus 81libstoragemgmt 998rpc 32saslauth 995rtkit 172[root@192 ~]# awk -F ":" 'NR%2==0{print $1,$3}' /etc/passwd //輸出所有偶數行的內容bin 1adm 3sync 5halt 7operator 11ftp 14systemd-network 192polkitd 999colord 997gluster 996abrt 173pulse 171unbound 994rpcuser 29[root@192 ~]# awk '/^root/{print}' /etc/passwd //輸出以root 開頭的行**awk** root:x:0:0:root:/root:/bin/bash[root@192 ~]# awk '/nologin$/{print}' /etc/passwd //輸出以 nologin 結尾的行bin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinmail:x:8:12:mail:/var/spool/mail:/sbin/nologinoperator:x:11:0:operator:/root:/sbin/nologingames:x:12:100:games:/usr/games:/sbin/nologin**awk 'BEGIN {x=0};/\/bin\/bash$/{x++};END {print x}' /etc/passwd**//統計以/bin/bash 結尾的行數,等同于 grep -c "/bin/bash$" /etc/passwd[root@192 ~]# awk 'BEGIN {x=0};/\/bin\/bash$/{x++};END {print x}' /etc/passwd25[root@192 ~]# grep -c "/bin/bash$" /etc/passwd25**awk 'BEGIN{RS=""};END{print NR}' /etc/squid/squid.conf**//統計以空行分隔的文本段落數**awk '{print $3}' test.txt** //輸出每行中(以空格或制表位分隔)的第 3 個字段**awk '{print $1,$3}' test.txt** //輸出每行中的第 1、3 個字段[root@192 opt]# awk -F ":" '$3==0{print $1,$7}' /etc/passwdroot /bin/bash[root@192 opt]# awk 'BEGIN{FS=":"};$3=="0"{print};' /etc/passwd //輸出以冒號分隔且第 7 個字段中包含/bash 的行的第 1 個字段root:x:0:0:root:/root:/bin/bash[root@192 opt]# awk -F ":" '$7~"/bash"{print $1}' /etc/passwdroottangezhangtamtomcom1com2com3[root@192 opt]# awk '($1~"nfs")&&(NF==8){print $1,$2}' /etc/services //輸出包含 8 個字段且第 1 個字段中包含 nfs 的行的第 1、2 個字段nfs 2049/tcpnfs 2049/udpnfs 2049/sctpnetconfsoaphttp 832/tcpnetconfsoaphttp 832/udpnetconfsoapbeep 833/tcpnetconfsoapbeep 833/udp[root@192 opt]# awk -F ":" '($7!="/bin/bash")&&($7!="/sbin/nologin"){print}' /etc/passwd //輸出第 7 個字段既不為/bin/bash 也不為/sbin/nologin 的所有行sync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhalt:x:7:0:halt:/sbin:/sbin/halt[root@192 opt]# awk -F: '/bash$/{print | "wc -l"}' /etc/passwd //調用wc -l 命令統計使用 bash 的用戶個數,等同于 grep -c "bash$" /etc/passwd25**[root@192 opt]# awk 'BEGIN {while ("w" | getline) n++ ; {print n-2}}'** //調用w 命令,并用來統計在線用戶數**5****getline判斷下面有沒有行**-2是前2行不是[root@zhang opt]# awk 'BEGIN { "hostname" | getline ; print $0}'zhang

sort工具

命令解釋
-b忽略每行前面的空格
-M按照月份進行排序
-n按照數字進行排序
-r反向排序
-u等同于 uniq,表示相同的數據僅顯示一行
-t指定分隔符,默認使用[Tab]鍵分隔
-o<輸出文件>:將排序后的結果轉存至指定文件
-k指定排序區域
-f忽略大小寫

將/etc/passwd 文件中的賬號進行排序。

將/etc/passwd 文件中第三列進行反向排序。

將/etc/passwd 文件中第三列進行反向排序。

將/etc/passwd 文件中第三列進行排序,并將輸出內容保存至 user.txt 文件中。

uniq工具

Uniq 工具在 Linux 系統中通常與 sort 命令結合使用,用于報告或者忽略文件中的重復行 ? -c:進行計數;? -d:僅顯示重復行;? -u:僅顯示出現一次的行。

刪除 centos 文件中的重復行。

[root@localhost opt]# cat cetos.txt centos5 centos5 centos5 centos5 centos6 centos6 centos6 centos8 centos8 centos8 centos9 centos9 centos9 [root@localhost opt]# uniq cetos.txt 刪除 centos 文件中的重復行。 centos5 centos6 centos8 centos9 [root@localhost opt]# uniq -c cetos.txt 刪除 centos 文件中的重復行,并在行首顯示該行重復出現的次數4 centos53 centos63 centos83 centos9 [root@localhost opt]# uniq -d cetos.txt 查找 testfile 文件中的重復行 centos5 centos6 centos8 centos9

tr工具

tr 命令常用來對來自標準輸入的字符進行替換、壓縮和刪除。可以將一組字符替換之后變成另一組字符,經常用來編寫優美的單行命令,作用很強大。

tr 具體的命令語法格式為:

-c:取代所有不屬于第一字符集的字符; -d:刪除所有屬于第一字符集的字符; -s:把連續重復的字符以單獨一個字符表示; -t:先刪除第一字符集較第二字符集多出的字符。 [root@localhost opt]# echo "KGC" | tr 'A-Z' 'a-z'將輸入字符由大寫轉換為小寫。 kgc [root@localhost opt]# echo "thissss isa text linnnnnnne." | tr -s 'sn'壓縮輸入中重復的字符。 this isa text line. [root@localhost opt]# echo 'hello world' | tr -d 'od'刪除字符串中某些字符。 hell wrl

總結

以上是生活随笔為你收集整理的正则表达式(grep命令,egrep命令,sed命令,awk命令,sort工具,uniq工具)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。