shell编程-正则表达式
1.正則表達(dá)式是什么
它主要用于字符串的模式分割,匹配,查找及替換操作。
2、正則表達(dá)式與通配符
正則表達(dá)式用來(lái)在文件中匹配符合條件的字符串,正則包含匹配。grep,awk,sed等命令可以支持正則表達(dá)式。
通配符用來(lái)匹配符合條件的文件名,通配符是完全匹配。ls ,find,cp這些命令不支持正則表達(dá)式,所以只能使用shell自己的通配符進(jìn)行匹配了。
3.基礎(chǔ)正則表達(dá)式
?.相當(dāng)于通配符的?
[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}
[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\
3.字符截取命令
cut [選項(xiàng)] 文件名
-f 列號(hào):提取第幾列
-d:分隔符:按照指定分隔符分割列,默認(rèn)分隔符是tab鍵(制表符)
ID name gender Make
1 ? nyan ? ? n ? ? ? 89
2 ? luke ? ? ?l ? ? ? ?87
3 ? mak ? ? ?n ? ? ? 67
cut -f 1,3 student.txt
grep "/bin/bash" /etc/passwd | grep -v "root" | cut -f 1 -d ":"
?
printf ?'輸出類(lèi)型輸出格式' 輸出內(nèi)容
輸出類(lèi)型:
%ns:輸出字符串。n是數(shù)字指代輸出幾個(gè)字符
%ni:輸出整數(shù)。n是數(shù)字指代輸出幾個(gè)數(shù)
%m.nf:輸出浮點(diǎn)數(shù).m和n指代輸出整數(shù)位和小數(shù)位位數(shù)
printf不支持管道符,所以printf $(cat 2.txt)
?
awk '條件1{動(dòng)作1}條件2{動(dòng)作2}...' 文件名
條件Pattern:
一般使用關(guān)系表達(dá)式作為條件:>,<>=,<=
動(dòng)作Action:
格式化輸出
流程控制語(yǔ)句
awk '{printf $2 "\t" $4 "\n"}' student.txt
BEGIN: awk 'BEGIN{print "test"}{print $2 "\t" $4}' student.txt
FS內(nèi)置變量: cat /etc/passwd |grep /bin/bash |awk '{FS=":"}{print $1 "\t" $3}'
如果沒(méi)有加BEGIN,則是先讀取數(shù)據(jù)賦值給指定變量$n,再告訴FS是":"作為分隔符,此時(shí)已晚。
cat /etc/passwd |grep /bin/bash |awk 'BEGIN{FS=":"}{print $1 "\t" $3}'
?
sed字符替換命令
sed [選項(xiàng)] '[動(dòng)作]' 文件名
-n:一般sed命令會(huì)把所有數(shù)據(jù)輸出到屏幕,如果加入此選擇,則只會(huì)把經(jīng)過(guò)sed命令處理的行輸出到屏幕。
-e:允許對(duì)輸入數(shù)據(jù)應(yīng)用多條sed命令編輯
-i:用sed修改結(jié)果直接修改讀取數(shù)據(jù)的文件,而不是有屏幕輸出。
動(dòng)作:
a:追加,在當(dāng)前行后添加一行或多行
c:行替換,用c后面的字符串替換源數(shù)據(jù)行
i:插入,在當(dāng)前行插入一行或多行。
d:刪除指定行
p:打印,輸出指定的行
s:字符串替換,用一個(gè)字符串替換另外一一個(gè)字符串。格式為 "行范圍s/舊字符串/新字符串/g"
sed -n '2p' student.txt
sed '2a 3 f v m' student.txt
sed '2,4d' student.txt
前面數(shù)字是行號(hào)
?
4.字符處理命令
sort [選項(xiàng)] 文件名
-f:忽略大小寫(xiě)
-n:以數(shù)值型進(jìn)行排序,默認(rèn)使用字符串型排序
-r:反向排序
-t:指定分隔符,默認(rèn)是分隔符是制表符
-k n[,m]:按照指定的字段范圍排序。從第n字段開(kāi)始,m字段結(jié)束(默認(rèn)到行尾)
sort -n -t ":" -k "3,3" /etc/passwd
wc:統(tǒng)計(jì)命令
wc [選項(xiàng)] 文件名
-l:只統(tǒng)計(jì)行數(shù)
-w:只統(tǒng)計(jì)單詞數(shù)
-m:只統(tǒng)計(jì)字符數(shù)
?
轉(zhuǎn)載于:https://www.cnblogs.com/Nyan-Workflow-FC/p/5667629.html
總結(jié)
以上是生活随笔為你收集整理的shell编程-正则表达式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: “秋开已寂寞”下一句是什么
- 下一篇: 外省男朋友,这段感情该何去何从?