1tr命令
用途:translate 可以對(duì)字符進(jìn)行替換淤井、刪除卸留、壓縮蓉冈。
語(yǔ)法:tr 選項(xiàng) string1 string2
選項(xiàng):
-c complement 補(bǔ)集
-d delete 刪除
-s squence 壓縮(將重復(fù)的字符濃縮)
string1 要被替換猖毫,刪除弟胀,壓縮的源字符串狸演,string2 用來(lái)替換的字符串
eg:echo “HELLO WORLD” | tr ‘A-Z’ ‘a(chǎn)-z’
hello world 字符串不是整體進(jìn)行替換项阴,是按照順序一個(gè)一個(gè)進(jìn)行替換的
eg:echo “hello world” | tr -d ‘hello’
wrd tr 會(huì)刪除它匹配到的全部字符串
eg:echo “a1b2c3d4” | tr -d ‘0-9’
abcd
eg:“aa1dd/*4-#5$” | tr -d -c ‘0-9’
145 -c字符集補(bǔ)集滑黔,將不在補(bǔ)集中的所有字符刪除
2 grep命令
用途:用于在一個(gè)或多個(gè)文件中查找關(guān)鍵字;不用于查找文件环揽;
語(yǔ)法:grep 選項(xiàng) 'find-char' filename
在grep命令中輸入字符串參數(shù)時(shí)略荡,最好用雙引號(hào)括起來(lái),例如:“string”.
這樣可以防止被誤解為shell命令歉胶,二來(lái)可以查找多個(gè)單詞組成的字符串汛兜,例如:“jet liu”.
不用雙引號(hào)仰剿,liu會(huì)被認(rèn)為是另一個(gè)文件.
在調(diào)用變量時(shí)法精,也應(yīng)該使用雙引號(hào). grep“$var”.
在調(diào)用模式匹配時(shí),應(yīng)使用單引號(hào).
選項(xiàng):
-f pat-file(合適的) 從pat-file中按照模式進(jìn)行匹配像鸡,相當(dāng)于指定文件
-i 模式匹配忽略大小寫(xiě)
-l 列出匹配模式的文件名稱辫塌,而非匹配的具體行
-n 顯示匹配的行及行號(hào)
-v 反向選擇漏策,亦即顯示出沒(méi)有 '搜尋字符串' 內(nèi)容的那一行
-c 只輸出匹配行的計(jì)數(shù).
-P 利用perl 正則語(yǔ)法進(jìn)行匹配.
egrep 可以讓一個(gè)文件作為保存的字符串,進(jìn)行匹配臼氨,需要使用-f開(kāi)關(guān).
eg:grep -n '[program]' regular_express.txt
9:Oh! This is my first program.
3 sort
用途:將文件的每一行作為一個(gè)單位掺喻,相互比較,最后升序輸出(默認(rèn)升序)
語(yǔ)法:sort 選項(xiàng) file
選項(xiàng):
-r 從大到小排序
-o 將排序結(jié)果寫(xiě)到我們想要寫(xiě)的文件里
如果储矩,將原文件排序后寫(xiě)到另一個(gè)文件感耙,用-o和> 均可,若還寫(xiě)到原文件持隧,必須-o
-n 以數(shù)值大小排序 -nr 以數(shù)值大小 反向排序
-t 制定某個(gè)字符作為分隔字符 (同 cut -d)
-k 定義排序鍵值字段(按列進(jìn)行排序)
eg:sort -n -k 2 -t:t1.txt
按t1中的第二列升序輸出
eg:liu 172 10000
cai 168 5000
guo 178 3000
zhao 168 2000
zhou 172 5000
按姓名順序排序:sort -t ' ' -k 1 file
身高 :sort -t ' ' -k 2 file
按身高即硼,身高相同,按工資升序排序:sort -n -t ' ' -k2 -k3 file (有的無(wú)法識(shí)別兩個(gè)-k選項(xiàng))
按工資降序排序屡拨,工資相同只酥,按身高升序排序: sort -t ' ' -k 3r -k 2n file
其中褥实,2n,3r中的n层皱,r屬于排序鍵值字段性锭。相當(dāng)于 -n,-r叫胖。
排序鍵值字段類型
b 忽略開(kāi)頭的空白
d 字典順序
f 不區(qū)分字母的大小寫(xiě)
i 忽略無(wú)法打印的字符
n 以數(shù)字比較
r 倒置順序的順序
eg:sort -t ' ' -k 1.2 file
表示對(duì)一個(gè)域的第二個(gè)字符開(kāi)始到本域最后一個(gè)字符位置的字符串進(jìn)行排序
eg:sort -t ' ' -k 1.2 1.2 -k 3,3nr file
只對(duì)第二個(gè)字母進(jìn)行排序草冈,沒(méi)有后面的1.2,將從第二個(gè)字符開(kāi)始到本域最后一個(gè)字符位置的字符串進(jìn)行排序
-k3 ,3nr 只對(duì)第三個(gè)域進(jìn)行降序排序
4 sed命令
用途:sed是一種在線編輯器,一次處理一行內(nèi)容瓮增。
處理時(shí)怎棱,把當(dāng)前處理的行存儲(chǔ)在臨時(shí)緩沖區(qū)中,稱為“模式空間” (pattern space)绷跑,接著用sed命令處理緩沖區(qū)中的內(nèi)容拳恋,處理完成后,把緩沖區(qū)的內(nèi)容送往屏幕砸捏。接著處理下一行谬运,這樣不斷重復(fù),直到文件末尾垦藏。文件內(nèi)容并沒(méi)有改變梆暖,除非你使用重定向存儲(chǔ)輸出。Sed主要用來(lái)自動(dòng)編輯一個(gè)或多個(gè)文件掂骏;簡(jiǎn)化對(duì)文件的反復(fù)操作轰驳;編寫(xiě)轉(zhuǎn)換程序等
語(yǔ)法:sed 選項(xiàng) 'edit command' file
sed -f script_file file
選項(xiàng):-e 'edit command'
將edit command 使用在輸入數(shù)據(jù)上,當(dāng)有多個(gè)命令需要應(yīng)用時(shí)弟灼,就必須使用-e
-f script-file
從指定的腳本里讀取命令
-n
不是每個(gè)最后已修改結(jié)果行都正常打印级解,而是顯示以p指定的(處理過(guò)的)行
eg:sed 's/\/home\/tos\//\/home\/lt\//' filename
將/home/tos/ 替換為 /home/lt/ (注意,/ 田绑; :都可以作為定界符)
eg:sed 's/moding/moden/g' filename
將moding替換為modern
eg:sed -n 's/^west/north/p' filename
將west開(kāi)頭的行替換為north勤哗,并顯示出來(lái)
eg:sed '/^ *$/d filename
刪除文件的空行
eg:sed 's/[0-9] [0-9][0-9]$/& .5/' filename
將file文件中以3個(gè)數(shù)字結(jié)尾的行,替換為原來(lái)的數(shù)字+ .5辛馆,&代表搜索到的字符串.
eg:sed 's/\(mod)ing/\1en/g' filename
將moding 替換為moden
eg:sed '2,5d' file
顯示除去2-5行的文件
eg:sed '/10[1-4]/d'
顯示文件除去101-104的行
eg:sed -n '/101/,/105/p' < example.txt
顯示example中從101-105的行.
eg:sed -e 's/foo/bar/g' -e 's/chicken/cow/g' filename >file1.txt
通過(guò)-e將多個(gè)命令傳遞給sed
& 在替代文本里表示:從此點(diǎn)開(kāi)始俺陋,替代成匹配于正則表達(dá)式的整個(gè)文本
g global 全局性 全部的意思 沒(méi)有g(shù)的話,只會(huì)對(duì)第一個(gè)匹配到的進(jìn)行處理
s 命令里的空模式昙篙,指使用前一個(gè)正則表達(dá)式
5 cut 命令
用途:選取命令,取出所需诱咏,一般針對(duì)行操作.
語(yǔ)法:cut [-bn] file 或者cut -c file cut -df file苔可,必須指定-b,-c,-f之一
選項(xiàng):-b 以字節(jié)為單位進(jìn)行分割
-c 以字符為單位進(jìn)行分割
-d 指定分隔符,用來(lái)幫助-f
-f 指定顯示那個(gè)區(qū)域.
-b -c袋狞,只能在固定的文檔中提取信息焚辅,很多時(shí)候映屋,bc沒(méi)有區(qū)別.
對(duì)于非固定格式的文檔,用域分隔:
cut -d :-f 1
用-d設(shè)置間隔符是:同蜻,然后用-f來(lái)截取我們所規(guī)定的第一個(gè)域.
cut -d :-f 3-5
截取以:作為分隔符的第三個(gè)到第五個(gè)這部分內(nèi)容.