linux文本处理工具及正则表达式集锦
cat命令:查看文本内容
cat[选项]...[文件]...
-E 显示行结束符
-n 显示文本内容时显示行号
-A 显示所以控制符
-b 非空行编号
-s 压缩连续的空行成一行
[root@bogon~]#cat-n/etc/issue>test.txt##查看文件内容并显示行号,重定向到test.txt文件中 [root@bogon~]#cattest.txt 1\S 2Kernel\ronan\m 3 [root@bogon~]#cat>file<kernel\ronan\m >EOF [root@bogon~]#catfile kernel\ronan\m
more 分页显示
more[OPTIONS...]FILE...
less 分页显示,是man命令使用的分页器
[root@bogon~]#less/etc/httpd.conf
[root@bogon~]#cat/etc/httpd.conf|more
head命令:
head[OPTION]...[FILE]...
-n显示文件前n行,默认显示前10行
-c#显示文件前#个字节内容
-q不显示包含给定文件名的文件头
[root@bogon~]#head-5/etc/fstab##显示文件前5行 # #/etc/fstab #CreatedbyanacondaonMonMay104:49:062017 # [root@bogon~]#head-q-n5/etc/fstab/etc/issue##显示多个文件前5行,并且不显示文件头 # #/etc/fstab #CreatedbyanacondaonMonMay104:49:062017 # \S Kernel\ronan\m
tail命令:
tail[OPTION]...[FILE]...
-f实时查看,常用监控日志文件
-c# 显示后#字节
-n# 显示后#行,默认显示行10行
[root@bogon~]#tail-2/etc/passwd##显示文件后2行 sshd:x:74:74:Privilege-separatedSSH:/var/empty/sshd:/sbin/nologin apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin [root@bogon~]#tail-f/var/log/messages##不停地去读最新的内容,有实时监视的效果,用Ctrl+c来终止 May202:46:26localhostsystemd:Configurationfile/usr/lib/systemd/system/wpa_supplicant.serviceismarkedexecutable.Pleaseremoveexecutablepermissionbits.Proceedinganyway.May202:46:26localhostyum[16325]:Installed:httpd-2.4.6-45.el7.centos.4.x86_64May203:01:01localhostsystemd:StartedSession10ofuserroot.May203:01:01localhostsystemd:StartingSession10ofuserroot.May203:45:49localhostsystemd-logind:Removedsession4.May203:46:20localhostsystemd:StartedSession11ofuserroot.May203:46:20localhostsystemd-logind:Newsession11ofuserroot.May203:46:20localhostsystemd:StartingSession11ofuserroot.May204:01:01localhostsystemd:StartedSession12ofuserroot.May204:01:01localhostsystemd:StartingSession12ofuserroot.
cut命令:
cut[OPTION]...[FILE]...
-d 指明分隔符,默认tab
-f 第#个字段
#,#[,#]:离散的多个字段,例如1,3,6
#-#:连续的多个字段, 例如1-6
混合使用:1-3,7
-c按字符切割
--output-delimiter=STRING指定输出分隔符
显示文件前10行,以“:”作为分隔符打印第1和第7个字段并分隔符换成空格输出:
[root@bogon~]#head/etc/passwd|cut-d":"-f1,7--output-delimiter=""##查看系统用户使用的shell root/bin/bash bin/sbin/nologin daemon/sbin/nologin adm/sbin/nologin lp/sbin/nologin sync/bin/sync shutdown/sbin/shutdown halt/sbin/halt mail/sbin/nologin operator/sbin/nologin [root@bogon~]#ipaddr|tail-4|head-1|cut-d"/"-f1|cut-d""-f6##获取ip地址 192.168.25.102
paste命令:
paste[OPTION]...[FILE]...
-d 分隔符:指定分隔符,默认用TAB
-s 所以行合并成一行显示
[root@bogon~]#paste/etc/resolv.conf/etc/issue##合并输出两个文件的内容 #GeneratedbyNetworkManager\S nameserver202.106.46.151Kernel\ronan\m nameserver202.106.195.68 [root@bogon~]#paste-s/etc/issue##对输出的内容独立占一行 \SKernel\ronan\m
wc命令:统计文件内容
-l 统计行数
-w 统计单词个数
-c 统计字节数
-m 只计数字符总数
-L打印最长行的长度
[root@bogon~]#cat/etc/passwd|wc-l##统计文件的行数 22 [root@bogon~]#echo"aaabbbccc"|wc-w##统计输出的单词数量 3 [root@bogon~]#echo"abcdef"|wc-m##统计输出有多少个字节 7
文本排序:sort[options]file(s)
-r逆序排序
-n根据字符串数值进行比较
-f忽略字符大小写
-u去重。配合-c,严格校验排序;不配合-c,则只输出一次排序结果
-t使用指定的分隔符代替非空格到空格的转换
-k1在位置1开始一个key,在位置2终止(默认为行尾)
[root@bogon~]#head/etc/passwd|sort-t":"-k3nr##以“:”分割对第三个字段数值进行倒序排列 operator:x:11:0:operator:/root:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin halt:x:7:0:halt:/sbin:/sbin/halt shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown sync:x:5:0:sync:/sbin:/bin/sync lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin bin:x:1:1:bin:/bin:/sbin/nologin root:x:0:0:root:/root:/bin/bash [root@bogon~]#cat/etc/passwd|sort-t':'-k7-u##以“:”分割对第7个字段排序,去重 root:x:0:0:root:/root:/bin/bash sync:x:5:0:sync:/sbin:/bin/sync halt:x:7:0:halt:/sbin:/sbin/halt bin:x:1:1:bin:/bin:/sbin/nologin shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
uniq命令:从输入中删除重复的前后相接的行
uniq[OPTION]...[FILE]...
-c: 显示每行重复出现的次数;
-d: 仅显示重复过的行;
-u: 仅显示唯一的行;
-i: 比较时不区分大小写
[root@bogon~]#uniq-cip.txt##显示重复行出现的次数,相邻行且完全一样为重复 3101.200.78.99 1103.41.52.94 2106.185.47.161 1101.200.78.99 2113.240.250.155 113.0.782.215 1185.130.5.231
文件比较:
diff命令:比较两个文件之间的区别
-r递归比较
-u输出“统一的(unified)
patch命令复制在其它文件中进行的改变(要谨慎使用!)
-b 选项来自动备份改变了的文件
[root@bogon~]#difffile1.txtfile2.txt 8c8##表示第8行有区别 <113.240.250.155 --- >133.240.250.155
替换和删除字符:
tr[OPTION]...SET1[SET2]
-c或——complerment:取字符集的补集
-d或——delete:删除所有属于第一字符集的字符;
-s或—squeeze-repeats:把连续重复的字符以单独一个字符表示
-t或--truncate-set1:先删除第一字符集较第二字符集多出的字符
[root@bogon~]#tr-s'\n'grep命令:过滤文本内容
grep[OPTIONS]PATTERN[FILE...]
-i 查找时忽略大小写
-v 取反
-n 显示匹配的行号
-c 统计匹配的行数
-o 仅显示匹配到的字符串;
-q 静默模式,不输出任何信息
-A#after, 后#行行
-B#before, 前#行行
-C#context, 前后各#行行
-e实现多个选项间的逻辑or关系
-w整行匹配整个单词
-E使用扩展正则表达式
正则表达式:
. 匹配任意单个字符;
[] 匹配指定范围内的任意单个字符
[^] 匹配指定范围外的任意单个字符
*匹配前面的字符任意次,包括0次次贪婪模式:尽可能长的匹配
.*任意长度的任意字符
\?匹配其前面的字符0或1次
\+匹配其前面的字符至少1次
\{m\}匹配前面的字符m次
\{m,n\}匹配前面的字符至少m次,至多n次
\{,n\}匹配前面的字符至多n次次
\{m,\}匹配前面的字符至少m次
^行首锚定,用于模式的最左侧
$行尾锚定,用于模式的最右侧
^PATTERN$用于模式匹配整行
^$空行
^[[:space:]]*$空白行
\<或或\b词首锚定,用于单词模式的左侧
\>或或\b词尾锚定;用于单词模式的右侧
\
匹配整个单词 \(\)将一个或多个字符捆绑在一起,当作一个整体进行处理
[:alpha:]所有字母,包括大、小写
[:alnum:]所有字母和数字
[:upper:]所有大写字母
[:lower:]所有小写字母
[:digit:]所有数字
[:punct:]所有标点符号
[:space:]空格和Tab
扩展正则表达式:
. 任意单个字符
[]指定范围的字符
[^] 不在指定范围的字符
*匹配前面字符任意次
?0或1次次
+1次或多次
{m}匹配m次
{m,n}至少m,至多n次
^行首
$行尾
\<,\b语首
\>,\b语尾
分组()
后向引用:\1,\2,...
或者:a|b
C|cat:C或cat
(C|c)at:Cat或cat
[root@bogon~]#grep'^\(root\|apache\)'test.txt##过滤以root或apache开头的行 root:x:0:0:root:/root:/bin/bash apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin [root@bogon~]#grep-R/sbin/nologin*##递归从所以文件中查询匹配的内容 test.txt:bin:x:1:1:bin:/bin:/sbin/nologin test.txt:daemon:x:2:2:daemon:/sbin:/sbin/nologin [root@bogon~]#ipaddr|grep"dynamic"|tr-s""|cut-d""-f3|cut-d"/"-f1##过滤ip地址 192.168.25.102 [root@bogon~]#ipaddr|grep-E-o"([0-9]{1,3}[\.]){1,3}[0-9]{1,3}" 127.0.0.1 192.168.25.102 192.168.25.255 [root@bogon~]#df-Th|tr-s""|sort-k6nr|head-1##查出使用率的最大百分比值的分区 /dev/sda1xfs497M125M373M25%/boot [root@bogon~]#cat/etc/passwd|sort-t':'-k3n|tail-1|cut-d":"-f1,3,7 systemd-bus-proxy:999:/sbin/nologin##找出uid最大值的用户,并显示用户名、UID、及shell类型以上所述是小编给大家介绍的linux文本处理工具及正则表达式集锦,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!