-
awk 命令查看全部
-
【FS内置变量】 FS变量用来指定awk中分隔符,awk默认分隔符是空格和制表符(TAB) #内置变量有很多,FS属常用的 例: [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】 执行所有命令先执行BEGIN,所有命令执行完执行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中,转义符要用"",否则报错 [root@CentOS ~]# awk '{printf $2 "\t" $4"\n"}' test.txt #这条命令没有条件,只有动作,所以是无条件执行,$2代表第2列,$4代表第4列 NAME MARK MING 80 HONG 66 CHENG 99 LIU 74查看全部
-
【格式化输出命令printf】 printf '输出类型输出格式' 输出内容 #''不要省略 输出类型 %ns #输出字符串,n是数字代表输出几个字符 %ni #输出整数,n是数字代表输出几个数字 %m.nf #输出浮点数,m和n数字,m代表域宽即输出位数,n代表小数输出位数。如%8.2f代表共输出8位数,其中2位小数,6位整数 输出格式 \a #输出警告声音,本地有效,远程登录是听不见的 \b #输出退格键,backspace键 \f #清除屏幕 \n #换行 \r #回车,enter键 \t #水平制表符,tab键 \v #垂直制表符,tab键 #控制输出默认右对齐,在"%"和字母之间加入一个"-" 号输出为左对齐 例: printf '%s' $(cat test.txt) #不调整输出格式,会把所有内容当成一个字符串输出 #不能用管道符方法(cat test.txt | printf '%s'),管道符是数据流,printf不支持 printf '%s\t%s\t%s\t%s\n' $(test.txt) #调整格式输出 在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缺点是对分隔符不规律的文件的字符截取较困难,这时候就需要更强大的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查看全部
-
\ #转义符,用于取消特殊符号的含义,做为普通符号使用 例: \.$ #匹配使用.结尾的行 \{n\} #表示其前面的字符重复n次 例: [root@localhost ~]# grep "[aj]\{2\}" test.txt #搜索test.txt文件中,字母a或字母j连续出现2次的行 aadf gjjk 9065jj #以上是搜索结果 \{n,\} #表示其前面的字符重复不小于n次 例: ^[0-9]\{3,\}[a-z] #匹配至少连续重复三次的数字开头的行,其后是一个任意小写字母 \{n,m\} #表示其前面的字符至少重复n次,最多重复m次 例: sa\{1,3\}i #表示字母s和i之间包含字母a,且字母a重复至少1次最多3次查看全部
-
printf格式化文本中的内容查看全部
-
. #匹配除了换行符以外任意一个字符 例: s..d #匹配在s和d两个字母之间有两个字符的字符串 s.*d #匹配在s和d字母间有任意字符的字符串 .* #匹配所有内容 ^ 匹配行首 $ 匹配行尾 例: ^M #匹配以大写M开头的行 n$ #匹配以小写n结尾的行 ^$ #匹配空白行 [] #匹配中括号中指定的任意一个字符,和shell通配符作用相似 例: s[ao]id #匹配s和i字母之间,是a或是o的字符串 [0-9] #匹配0-9任意一个数字 ^[a-z] #匹配用任意小写字母开头的行 [^] #匹配除中括号的字符以外的任意一个字符,相当于[]取反 例: ^[^a-z] #匹配不用小写字母开头的行 ^[^a-zA-Z] #匹配不用字母开头的行查看全部
-
【基础正则表达式】 #Linux中还有扩展正则表达式,例如? 和 ()都是扩展正则表达式 * #前一个字符匹配0次,或任意多次,0次代表任意字符,包括空白 例: a* #匹配所有内容 aa* #匹配至少包含有一个a的字符串 aaa* #匹配至少包含有两个连续a的字符串 aaaa* #匹配至少包含四个连续a的字符串查看全部
-
【正则表达式与通配符区别】 #正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed等命令可以支持正则表达式 #通配符用来匹配符合条件的文件名,通配符是完全匹配。ls find cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配了查看全部
-
【什么是正则表达式】 正则表达式是用于描述字符排列和匹配模式的一种语法规则,它主要用于字符串的模式分割、匹配、查找及替换操作。查看全部
举报
0/150
提交
取消