-
awk 命令查看全部
-
【FS內(nèi)置變量】 FS變量用來指定awk中分隔符,awk默認分隔符是空格和制表符(TAB) #內(nèi)置變量有很多,F(xiàn)S屬常用的 例: [root@CentOS ~]# cat /etc/passwd | grep "/bin/bash" root:x:0:0:root:/root:/bin/bash user1:x:502:502::/home/user1:/bin/bash avls:x:503:503::/home/avls:/bin/bash [root@CentOS ~]# cat /etc/passwd | grep "/bin/bash" | awk 'BEGIN{FS=":"}{printf $1 "\t" $6 "\n"}' #指定分隔符為:,讀取第1列和第6列 root /root user1 /home/user1 avls /home/avls 例: [root@CentOS ~]# cat test.txt ID NAME GENDER MARK 1 MING F 80 2 HONG F 66 3 CHENG M 99 4 LIU F 74 [root@CentOS ~]# cat test.txt | grep -v NAME | awk '$4>73{printf $1"\t"$2"\t"$4"\n"}' #不要標題行,取出成績大于73的編號姓名和成績 1 MING 80 3 CHENG 99 4 LIU 74查看全部
-
例: [root@CentOS ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda5 16G 4.7G 11G 32% / tmpfs 504M 0 504M 0% /dev/shm /dev/sda1 190M 33M 147M 19% /boot /dev/sda3 2.0G 39M 1.8G 3% /home [root@CentOS ~]# df -h | grep /dev/sda5 | awk '{printf $5"\n"}' | cut -d % -f 1 32 #截取sda5已使用空間 【條件 BEGIN、END】 執(zhí)行所有命令先執(zhí)行BEGIN,所有命令執(zhí)行完執(zhí)行END 例: [root@CentOS ~]# cat test.txt ID NAME GENDER MARK 1 MING F 80 2 HONG F 66 3 CHENG M 99 4 LIU F 74 [root@CentOS ~]# awk 'BEGIN{printf "test is:"}{printf $2 "\t" $4 "\n"}' test.txt test is:NAME MARK MING 80 HONG 66 CHENG 99 LIU 74 [root@CentOS ~]# awk 'END{printf "test END!\n"}{printf $2 "\t" $4 "\n"}' test.txt NAME MARK MING 80 HONG 66 CHENG 99 LIU 74 test END! [root@CentOS ~]#查看全部
-
【字符截取awk命令】 awk '條件1{動作1}條件2{動作2}條件3{動作3}...' 文件名 條件(pattern): 一般使用關系表達式作為條件,如BEGIN、END x > 10 #判斷變量x是否大于10 x >= 10 #判斷大于等于 x <= 10 #小于等于 動作(action): 格式化輸出 流程控制語句 例: [root@CentOS ~]# cat test.txt ID NAME GENDER MARK 1 MING F 80 2 HONG F 66 3 CHENG M 99 4 LIU F 74 [root@CentOS ~]# awk '{printf $2 "\t" $4\n}' test.txt awk: {printf $2 "\t" $4\n} awk: ^ 反斜杠不是行的最后一個字符 #注意,在這awk中,轉(zhuǎn)義符要用"",否則報錯 [root@CentOS ~]# awk '{printf $2 "\t" $4"\n"}' test.txt #這條命令沒有條件,只有動作,所以是無條件執(zhí)行,$2代表第2列,$4代表第4列 NAME MARK MING 80 HONG 66 CHENG 99 LIU 74查看全部
-
【格式化輸出命令printf】 printf '輸出類型輸出格式' 輸出內(nèi)容 #''不要省略 輸出類型 %ns #輸出字符串,n是數(shù)字代表輸出幾個字符 %ni #輸出整數(shù),n是數(shù)字代表輸出幾個數(shù)字 %m.nf #輸出浮點數(shù),m和n數(shù)字,m代表域?qū)捈摧敵鑫粩?shù),n代表小數(shù)輸出位數(shù)。如%8.2f代表共輸出8位數(shù),其中2位小數(shù),6位整數(shù) 輸出格式 \a #輸出警告聲音,本地有效,遠程登錄是聽不見的 \b #輸出退格鍵,backspace鍵 \f #清除屏幕 \n #換行 \r #回車,enter鍵 \t #水平制表符,tab鍵 \v #垂直制表符,tab鍵 #控制輸出默認右對齊,在"%"和字母之間加入一個"-" 號輸出為左對齊 例: printf '%s' $(cat test.txt) #不調(diào)整輸出格式,會把所有內(nèi)容當成一個字符串輸出 #不能用管道符方法(cat test.txt | printf '%s'),管道符是數(shù)據(jù)流,printf不支持 printf '%s\t%s\t%s\t%s\n' $(test.txt) #調(diào)整格式輸出 在awk命令的輸出中支持print和printf命令 print會在每個輸出之后自動加入一個換行符(Linux默認沒有print命令)。 printf是標準格式輸出命令,不會自動加入換行符,如要換行,需要手工加入換行符。查看全部
-
wc 命令查看全部
-
sort查看全部
-
【字符截取命令cut】 cut 選項 文件名 選項 -f 列號 #提取第幾列 -d 分隔符 #按照指定分隔符分割列 例: apache:x:48:48:Apache:/var/www:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin mysql:x:500:500::/home/mysql:/sbin/nologin www:x:501:501::/home/www:/sbin/nologin test:x:502:502::/home/test:/bin/bash test2:x:503:503::/home/test2:/bin/bash tony:x:504:504::/home/tony:/bin/bash lw:x:505:506::/home/lw:/bin/bash [root@localhost ~]# grep "/bin/bash" /etc/passwd | cut -f 1 -d : root test test2 tony lw [root@localhost ~]# grep "/bin/bash" /etc/passwd | cut -f 1 -d ":" root test test2 tony lw [root@localhost ~]# #cut缺點是對分隔符不規(guī)律的文件的字符截取較困難,這時候就需要更強大的awk命令查看全部
-
【幾個正則表達式例子】 [0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\} #匹配日期格式YYYY-MM-DD [0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\} #匹配IP地址 例: [root@localhost ~]# cat test.txt 2015-12-02 231.02.12 130.1.1.32 255.255.255.255 dadada fdasda `` 231 [root@localhost ~]# grep "[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}" test.txt 2015-12-02 [root@localhost ~]# grep "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" test.txt 130.1.1.32 255.255.255.255 [root@localhost ~]# grep "[0-9]\{4\}-[0-9]\{1,2\}-[0-9]\{1,2\}" test.txt 2015-12-02 2012-2-11查看全部
-
\ #轉(zhuǎn)義符,用于取消特殊符號的含義,做為普通符號使用 例: \.$ #匹配使用.結尾的行 \{n\} #表示其前面的字符重復n次 例: [root@localhost ~]# grep "[aj]\{2\}" test.txt #搜索test.txt文件中,字母a或字母j連續(xù)出現(xiàn)2次的行 aadf gjjk 9065jj #以上是搜索結果 \{n,\} #表示其前面的字符重復不小于n次 例: ^[0-9]\{3,\}[a-z] #匹配至少連續(xù)重復三次的數(shù)字開頭的行,其后是一個任意小寫字母 \{n,m\} #表示其前面的字符至少重復n次,最多重復m次 例: sa\{1,3\}i #表示字母s和i之間包含字母a,且字母a重復至少1次最多3次查看全部
-
printf格式化文本中的內(nèi)容查看全部
-
. #匹配除了換行符以外任意一個字符 例: s..d #匹配在s和d兩個字母之間有兩個字符的字符串 s.*d #匹配在s和d字母間有任意字符的字符串 .* #匹配所有內(nèi)容 ^ 匹配行首 $ 匹配行尾 例: ^M #匹配以大寫M開頭的行 n$ #匹配以小寫n結尾的行 ^$ #匹配空白行 [] #匹配中括號中指定的任意一個字符,和shell通配符作用相似 例: s[ao]id #匹配s和i字母之間,是a或是o的字符串 [0-9] #匹配0-9任意一個數(shù)字 ^[a-z] #匹配用任意小寫字母開頭的行 [^] #匹配除中括號的字符以外的任意一個字符,相當于[]取反 例: ^[^a-z] #匹配不用小寫字母開頭的行 ^[^a-zA-Z] #匹配不用字母開頭的行查看全部
-
【基礎正則表達式】 #Linux中還有擴展正則表達式,例如? 和 ()都是擴展正則表達式 * #前一個字符匹配0次,或任意多次,0次代表任意字符,包括空白 例: a* #匹配所有內(nèi)容 aa* #匹配至少包含有一個a的字符串 aaa* #匹配至少包含有兩個連續(xù)a的字符串 aaaa* #匹配至少包含四個連續(xù)a的字符串查看全部
-
【正則表達式與通配符區(qū)別】 #正則表達式用來在文件中匹配符合條件的字符串,正則是包含匹配。grep、awk、sed等命令可以支持正則表達式 #通配符用來匹配符合條件的文件名,通配符是完全匹配。ls find cp這些命令不支持正則表達式,所以只能使用shell自己的通配符來進行匹配了查看全部
-
【什么是正則表達式】 正則表達式是用于描述字符排列和匹配模式的一種語法規(guī)則,它主要用于字符串的模式分割、匹配、查找及替換操作。查看全部
舉報
0/150
提交
取消