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