Linux基础三剑客
一、grep:文本搜索工具
??????? -c??? 只輸出匹配的行數(shù)
????????-i???? 不區(qū)分大小寫
????????-v????過濾掉包含指定字符串的行
????????-s????不顯示不存在或無匹配的文本的錯(cuò)誤信息
????????-w????只顯示匹配的整個(gè)單詞,而不是字符串的一部分
????????-n????顯示匹配行及行號(hào)
????????-l????? 只列出匹配的文件名
????????-L???? 列出不匹配的文件名
??????????? 例:
????????? grep -c root? /etc/passwd????如果包含root字符串在文件中有兩行,顯示為2
??????????? grep -i root /etc/passwd?????? 顯示出root字符串的行,包含其大小寫
???????????? grep -v root /etc/passwd????? 顯示除含有root字符串的行
???????????? grep ‘test’ d*????????????顯示所有以d開頭的文件中包含test字符串的行
????????? grep '^$' /etc/passwd????顯示passwd文件中的空行
????????? grep 'test'? aa bb cc????????顯示在aa,bb,cc文件中匹配test的行
????????正則表達(dá)式的主要參數(shù):
????????????????????\????????忽略正則表達(dá)式中特殊字符的原有含義
????????????????????[]????????單個(gè)字符,如[a]即[a]符合要求
????????????????????[-]????????范圍,如[a-z],即a,b,c一直到z都符合要求
????????????????????????grep '[a-z]\{5\}' aa????顯示所有包含每個(gè)字符串至少有5個(gè)連續(xù)小寫字符的字符串的行,a-z都可以
????????????????????????grep 'w\(es\)t.*\1' aa????如果west被匹配,則es被存儲(chǔ)到內(nèi)存中,并標(biāo)記為1,然后搜索任意個(gè)字符(.*), 這些字符后面緊跟著另外一個(gè)es(\1),找到就顯示該行。例:west.es? west.esdd.es west.aa.es
????????????????????????grep test /mnt/*????????目錄下搜索帶字符串test的文件
????????????????????????grep -l test /mnt/*????????只列出匹配的文件名
????????????????????????grep -L test /mnt/*????????列出不匹配的文件名
????????? [[:alpha:]]????????單個(gè)字母
????????? [[:lower:]]????????單個(gè)小寫字母
????????? [[:upper:]]????????單個(gè)大寫字母
????????? [[:alnum:]]????????單個(gè)字母或數(shù)字
????????? [[:punct:]]????????單個(gè)符號(hào),不包含數(shù)字,字母以及空格
????????? [[:digit:]]????????????數(shù)字
????????? [[:space:]]????????空格
????????????????例:grep '5[[:upper:]][[:upper:]]' aa????????顯示以5開頭以兩個(gè)大寫字母結(jié)尾的行
二、sed:文本處理工具
????????-u????????展示修改后的文本內(nèi)容,但不是真的改
????????-i????????? 直接修改文件,不顯示內(nèi)容
????????sed '1d' file????????刪除第一行
????????sed '2,$d' file ? ????????刪除第二行到最后一行
????????sed '1a play lol' file ??? 第一行后面增加字符串"play lol"
????????sed '5i go die' file????????在第5行前添加"go die"
????????sed '1c Hi' file????????第一行代替為Hi
????????sed -n 2,'$'p file??????? 顯示第二行到最后一行
????????sed 's/^.*asd.*$/lizekang/g' file????匹配asd字符,并修改整行為lizekang
????????sed '14c [file]' file????????修改14行整行為[file]
????????sed -n '/^\//p' file????????顯示以/開頭的行(如果沒有-n選項(xiàng),則顯示file中的所有內(nèi)容和/開頭的行兩份,-n模式將其他行過濾掉,只顯示/開頭的行)
????????sed '/^$/d' fiel????????刪除文件中的空白行
????????sed '/^#/d' file ????????刪除文件開頭的#號(hào)
????????sed 's/^[[:spqce:]]*//g' fiel????????刪除文件行首的空格
三、awk:文本分析工具
????????-F(分割詞):不添加此參數(shù)默認(rèn)以空格分割。
????????'{print $1}' :必要字段,輸出具體第幾段,$NF表示最后一個(gè)元素。
????????awk '{print NR,$0}' 在每行前面加上行號(hào)。
????????awk '{if (NR<=3+1 && NR>=2) print $0}' 輸出第二行到第四行。
????????netstat -an|awk '/^tcp/ {++state[$NF]} END {for(i in state) print i,"\t",state[i]}'
????????????/^tcp/? 濾出tcp開頭的記錄,屏蔽udp,socket等無關(guān)記錄。
????????????state[]?? 相當(dāng)于定義一個(gè)叫state的數(shù)組
????????????NF????????表示記錄的字段數(shù) ????????
????????????state[$NF]?? 表示數(shù)組元素的值,如上就是state[TIME_WAIT]的連接數(shù)
????????????++state[$NF]????上面的連接數(shù)加1
????????????下面是awk的一些練習(xí):
????????????????1. 用awk 打印整個(gè)test.txt (以下操作都是用awk工具實(shí)現(xiàn),針對(duì)test.txt);
????????????????????????awk '{print $0}' test.txt
??? ????????????2. 查找所有包含’bash’的行;
????????????????????????awk '/bash/' test.txt
??? ????????????3. 用’:’作為分隔符,查找第三段等于0的行;
????????????????????????awk -F ':' '$3=="0"' test.txt
??? ????????????4. 用’:’作為分隔符,查找第一段為’root’的行,并把該段的’root’換成’toor’(可以連同sed一起使用);
????????????????????????awk -F ':' '$1=="root"' test.txt | sed 's/root/root/g'
??? ????????????5. 用’:’作為分隔符,打印最后一段;
????????????????????????awk -F ':' '{print $NF}' text.txt
??? ????????????6. 打印行數(shù)大于20的所有行;
????????????????????????awk -F ':' 'NR>20' test.txt
??? ????????????7. 用’:’作為分隔符,打印所有第三段小于第四段的行;
????????????????????????awk -F ':' '$3<$4' test.txt
??? ????????????8. 用’:’作為分隔符,打印第一段以及最后一段,并且中間用’@’連接 (例如,第一行應(yīng)該是這樣的形式 “root@/bin/bash”;
????????????????????????awk -F ':' '{print $1"@"$NF}' test.txt
??? ????????????9. 用’:’作為分隔符,把整個(gè)文檔的第四段相加,求和;
????????????????????????awk -F ':' '{(sum+=$4)}; END {print sum}' test.txt
轉(zhuǎn)載于:https://blog.51cto.com/zzkkk/1846979
總結(jié)
以上是生活随笔為你收集整理的Linux基础三剑客的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 套题T4
- 下一篇: jar包使用以及生成