-
????df -h | awk '{print $5}' #df第五字段數(shù)據(jù)
????df -h | grep "/dev/sda5" | awk '{print $5}'????#只要根分區(qū)的第五段數(shù)據(jù)
????df -h | grep "/dev/sda5" | awk '{print $5}' | cut -d "%" -f 1????#去掉%
????awk 'BEGIN{print "test"}{print $2 "\t" $4}' student.txt????#先執(zhí)行BEGIN
????awk 'END{print "test"}{print $2 "\t" $4}' student.txt????#最后執(zhí)行END
???? cat /etc/passwd | grep /bin/bash | awk 'BEGIN{FS=":"}{print $1 "\t" $3}'????#先執(zhí)行分隔符,F(xiàn)S內(nèi)置變量標(biāo)識":"
???? cat student.txt | grep -v Name | awk '$4>=70{print $2}'????#不看名字,只看第二個字段大于70分的成績
查看全部 -
awk是一個數(shù)據(jù)處理工具,相比于sed常常作用于一整行的處理,將一行分成數(shù)個”字段“來處理。?
awk命令
????awk '條件類型1{動作1}條件類型2{動作2}...' 文件名
條件(Pattern):
????一般使用關(guān)系表達(dá)式作為條件,比如x>10,x<=10
動作(Action)
????格式化輸出
????流程控制語句
舉例:
????awk '{printf $2 "\t" $4 "\n"}' student.txt #\t\n一定要加"" $2代表第二個字段
????awk '{print $2 "\t" $4}' student.txt #print自動換行
awk執(zhí)行流程
????awk先讀取第一行數(shù)據(jù)再判斷條件,因為這里沒寫條件,將文件名student.txt賦值給$0,$2是第二個字段$4是第四個字段。
????再讀取第二行數(shù)據(jù)重復(fù)上述步驟
查看全部 -
printf "輸出類型輸出格式" 輸出內(nèi)容?
輸出類型:?
????%ns????????輸出字符串。n是數(shù)字指代輸出幾個字符?
????%n????????輸出整數(shù)。n是數(shù)字,指代輸出幾個數(shù)字?
????%m.nf????????輸出浮點數(shù)。m和n是數(shù)字,指代輸出的整數(shù)位數(shù)和小數(shù)位數(shù)。如%8.2f代表共輸出8位數(shù),其中2是小數(shù)位數(shù),6位是整數(shù)?
輸出格式:?
????\a????????輸出警告聲音?
????\b????????輸出退格鍵,也就是Backspace鍵?
????\f????????清空屏幕
????\n????????換行?
????\r????????回車,也就是Enter鍵?
????\t????????水平輸出退格鍵,也就是Tab鍵?
????\v????????垂直輸出退格鍵,也就是Tab鍵?
舉例:
???? echo 123456
???? echo 1 2 3 4 5 6
???? printf 1 2 3 4 5 6
???? printf %s 1 2 3 4 5 6
???? printf %s %s %s 1 2 3 4 5 6
???? printf '%s %s %s' 1 2 3 4 5 6
???? printf '%s\t%s\t%s\n' 1 2 3 4 5 6
????
???? vi student.txt
???? printf student.txt #輸出的只是文件名,不是里面內(nèi)容
???? echo student.txt #輸出的只是文件名,不是里面內(nèi)容
???? printf $(cat student.txt) #只顯示ID
???? printf 's' $(cat student.txt) #沒加分割,所有內(nèi)容連成一篇輸出
???? printf '%s\t%s\t%s\t%s\t\n' $(cat student.txt)
查看全部 -
引例????????????grep行提取,cut列提??;?
????useradd user1
????vi /etc/passwd
????grep "/bin/bash" /etc/passwd | grep -v "root"????#-v排除root用戶
cut命令
????cut [選項] 文件名????#默認(rèn)是TAB制表符?????
????選項:
????-f 列號:提取第幾列(從1開始)?
????-d 分隔符:按照指定分隔符分割列
舉例:
????vi student.txt??????#以下是編輯內(nèi)容
????ID? ? ? Name? ? gender? Mark
????1? ? ? ?furong? F? ? ? ?85
????2? ? ? ?fenggj? F? ? ? ?60
????3? ? ? ?cang? ? F? ? ? ?70
?
????cut -f 2,4 student.txt
????grep "/bin/bash" /etc/passwd | grep -v "root" | cut -f 1 -d ":"
????df -h????????#系統(tǒng)分區(qū)使用狀況
????df -h | cut -f 1,5????#沒有找到TAB制表符,整行數(shù)據(jù)都是第一列內(nèi)容
????cut -f 列號,列號 (多個列號用逗號隔開;這個方法默認(rèn)的文件以TAB制表符)?
查看全部 -
命令模式????????d+G? ? ? ? 鼠標(biāo)在最前面刪除所有內(nèi)容
????grep "[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}" test.txt????#日期
????grep "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" test.txt????#IP地址
查看全部 -
1、轉(zhuǎn)義符“\”
????讓特殊的符號喪失它的作用,只是表示這個符號本身
????"\.$"? ?#匹配以"."結(jié)尾的行,使特殊符號"."失去作用
2、"\{n\}" 表示其前面的字符恰好出現(xiàn)n次
????"a\{3\}"? ? #匹配a字母連續(xù)出現(xiàn)三次的字符串????grep?"a\{3\}" test.txt
????"a\{3\}u"????#u前面出現(xiàn)連續(xù)三次的a字符串????grep?"xa\{3\}u" test.txt? ?
????"[0-9]\{3\}"? ?#匹配包含連續(xù)的三個數(shù)字的字符串,最好加上定界符,即左右加上匹配的字母,如"a[0-9]\{3,\}b",否則易匹配錯誤,因為正則是包含匹配
3、"\{n,\}"表示其前面的字符出現(xiàn)不小于n次
????"xc\{1,3\}u"????#匹配在字母x和u之間最少一個c,最多三個c
????"^[0-9]\{3,\}[a-z]"????#匹配最少用連續(xù)三個數(shù)字開頭包含小寫字母的行
4、"\{n,m\}"匹配其前面的字符出現(xiàn)n-m次的行
????"sa\{1,3\}i"????#匹配以s開頭、i結(jié)尾,且s和i之間有1-3個a的行
查看全部 -
1、"."匹配除了換行符外任意一個字符
????"s..d"????#會匹配在s和d這兩個字母之間一定有兩個字符的單詞
????"s.*d"????#匹配在s和d字母之間有任何字符
????".*"????????#匹配所有內(nèi)容
????grep "s..d" test.txt
????grep "s.*d" test.txt
????grep ".*" test.txt????????#查找所有內(nèi)容
2、"^"匹配行首,“$”匹配行尾
????"^M"? ?#匹配以大寫字母"M"開頭的行
????"n$"? ?#匹配以小寫字母“n”結(jié)尾的行
????"^$"? ?#會匹配空白行
????grep -n "^$" test.txt ????#-n顯示空白行號
3、"[]"匹配中括號內(nèi)指定的任意一個字符,只匹配一個字符,與通配符用法相同
????"s[oa]id"? ?#匹配s和i字母中,要么是a,要么是o
????"[0-9]"? ?#匹配任意一個數(shù)字
????"^[0-9]"? ?#匹配以數(shù)字開頭的行
????"^[0-9]$"????#匹配以數(shù)字結(jié)尾的行
????"[a-z]$"????#表示匹配以小寫字母結(jié)束的行
????"^[^a-z]"? ?#匹配不用小寫字母開頭的行,“[]”內(nèi)的“^”表示取反
????"[^a-zA-Z]$"? ?#匹配不以字母結(jié)尾的行,linux中,a-zA-Z表示所有字母
查看全部 -
"*"前一個字符匹配0次,或任意多次????
????vi test.txt
????"a*"????#匹配所有內(nèi)容,包括空白行
????"aa*"????#匹配至少包含有一個a的行
????"aaa*"????#匹配最少包含有兩個連續(xù)a的字符串
????"aaaaa*"????#匹配最少包含有四個連續(xù)a的字符串
舉例:
????grep "a*" test.file????#*前加任意字符代表該字符重復(fù)0次到任意多次
????grep "aa*" test.file
????grep "aaa*" test.file
查看全部 -
正則表達(dá)式與通配符?
通配符?
????* ????????代表匹配任意內(nèi)容?
????? ????????代表匹配任意一個內(nèi)容
????[] ????代表中括號中一個字符?
????正則表達(dá)式用來在文件中匹配符合條件的字符串,正則是包含匹配。grep,awk,sed等命令可以支持正則表達(dá)式。?
????通配符用來匹配符號條件的文件名,通配符是????匹配。ls,find,cp這些命令不支持正則表達(dá)式,所以只能使用shell自己的通配符來進(jìn)行匹配。
????touch abc;touch abcd
????find . -name "abc*"????#必須加上""
????cat anaconda-ks.cfg????????#安裝日記
????grep "size" anaconda-ks.cfg????#在安裝日記里找size
查看全部 -
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?正則表達(dá)式?
正則表達(dá)式是什么?
????正則表達(dá)式是用于描述字符排列和匹配模式的一種語法規(guī)則。它主要用于字符串的模式分割、匹配、查找及替換操作。主要用于模糊匹配。
查看全部 -
排序命令sort
查看全部 -
統(tǒng)計命令wc
查看全部 -
sed [選項] [動作] 文件名
sed基本選項
查看全部 -
sed選項查看全部
-
sed動作查看全部
舉報