文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

linux文本处理工具及正则表达式的示例分析

2023-06-09 16:38

关注

这篇文章主要介绍linux文本处理工具及正则表达式的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

cat命令:查看文本内容

         cat [选项]... [文件]...

         -E    显示行结束符

         -n    显示文本内容时显示行号

         -A    显示所以控制符

         -b    非空行编号

         -s     压缩连续的空行成一行

[root@bogon ~]# cat -n /etc/issue > test.txt    ##查看文件内容并显示行号,重定向到test.txt文件中[root@bogon ~]# cat test.txt   1 \S  2 Kernel \r on an \m  3 [root@bogon ~]# cat > file <<EOF    ##创建file文件,输入内容以EOF结束> kernel \r on an \m> EOF[root@bogon ~]# cat file kernel \r on an \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# Created by anaconda on Mon May 1 04:49:06 2017#[root@bogon ~]# head -q -n 5 /etc/fstab /etc/issue    ##显示多个文件前5行,并且不显示文件头## /etc/fstab# Created by anaconda on Mon May 1 04:49:06 2017#\SKernel \r on an \m  

tail命令:

tail [OPTION]... [FILE]...

         -f   实时查看,常用监控日志文件

   -c #   显示后#字节

   -n #  显示后#行,默认显示行10行

[root@bogon ~]# tail -2 /etc/passwd    ##显示文件后2行sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologinapache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin[root@bogon ~]# tail -f /var/log/messages    ##不停地去读最新的内容,有实时监视的效果,用Ctrl+c来终止May 2 02:46:26 localhost systemd: Configuration file /usr/lib/systemd/system/wpa_supplicant.service is marked executable. Please remove executable permission bits. Proceeding anyway. May 2 02:46:26 localhost yum[16325]: Installed: httpd-2.4.6-45.el7.centos.4.x86_64 May 2 03:01:01 localhost systemd: Started Session 10 of user root. May 2 03:01:01 localhost systemd: Starting Session 10 of user root. May 2 03:45:49 localhost systemd-logind: Removed session 4. May 2 03:46:20 localhost systemd: Started Session 11 of user root. May 2 03:46:20 localhost systemd-logind: New session 11 of user root. May 2 03:46:20 localhost systemd: Starting Session 11 of user root. May 2 04:01:01 localhost systemd: Started Session 12 of user root. May 2 04:01:01 localhost systemd: Starting Session 12 of user root.

 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="  "  ##查看系统用户使用的shellroot  /bin/bash      bin  /sbin/nologindaemon  /sbin/nologinadm  /sbin/nologinlp  /sbin/nologinsync  /bin/syncshutdown  /sbin/shutdownhalt  /sbin/haltmail  /sbin/nologinoperator  /sbin/nologin[root@bogon ~]# ip addr |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    ##合并输出两个文件的内容# Generated by NetworkManager  \Snameserver 202.106.46.151  Kernel \r on an \mnameserver 202.106.195.68  [root@bogon ~]# paste -s /etc/issue    ##对输出的内容独立占一行\S  Kernel \r on an \m

wc命令:统计文件内容

         -l      统计行数

         -w    统计单词个数

         -c     统计字节数

         -m    只计数字符总数

     -L  打印最长行的长度

[root@bogon ~]# cat /etc/passwd |wc -l  ##统计文件的行数22[root@bogon ~]# echo "aaa bbb ccc" |wc -w    ##统计输出的单词数量3[root@bogon ~]# echo "abcdef" |wc -m    ##统计输出有多少个字节7

文本排序:sort [options] file(s)

  -r   逆序排序

  -n   根据字符串数值进行比较

  -f   忽略字符大小写

  -u   去重。配合-c,严格校验排序;不配合-c,则只输出一次排序结果

  -t   使用指定的分隔符代替非空格到空格的转换

  -k 1 在位置1 开始一个key,在位置2 终止(默认为行尾)

[root@bogon ~]# head /etc/passwd |sort -t ":" -k 3nr    ##以“:”分割对第三个字段数值进行倒序排列operator:x:11:0:operator:/root:/sbin/nologinmail:x:8:12:mail:/var/spool/mail:/sbin/nologinhalt:x:7:0:halt:/sbin:/sbin/haltshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownsync:x:5:0:sync:/sbin:/bin/synclp:x:4:7:lp:/var/spool/lpd:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinbin:x:1:1:bin:/bin:/sbin/nologinroot:x:0:0:root:/root:/bin/bash[root@bogon ~]# cat /etc/passwd |sort -t':' -k 7 -u    ##以“:”分割对第7个字段排序,去重root:x:0:0:root:/root:/bin/bashsync:x:5:0:sync:/sbin:/bin/synchalt:x:7:0:halt:/sbin:/sbin/haltbin:x:1:1:bin:/bin:/sbin/nologinshutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

uniq 命令:从输入中删除重复的前后相接的行

   uniq [OPTION]... [FILE]...

  -c:  显示每行重复出现的次数;

  -d:  仅显示重复过的行;

  -u:  仅显示唯一的行;

  -i:  比较时不区分大小写

[root@bogon ~]# uniq -c ip.txt     ##显示重复行出现的次数,相邻行且完全一样为重复   3 101.200.78.99   1 103.41.52.94   2 106.185.47.161   1 101.200.78.99   2 113.240.250.155   1 13.0.782.215   1 185.130.5.231

文件比较:

diff命令:比较两个文件之间的区别

  -r  递归比较

  -u  输出“统一的(unified )

  patch 命令复制在其它文件中进行的改变(要谨慎使用!)

  -b   选项来自动备份改变了的文件

[root@bogon ~]# diff file1.txt file2.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' < file1.txt     ##删除空行103.41.52.94106.185.47.161\SKernel \r on an \m106.185.47.161[root@bogon ~]# tr A-Z a-z < file1.txt     ##把大写字母换成小写103.41.52.94106.185.47.161\skernel \r on an \m106.185.47.161

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   词尾锚定;用于单词模式的右侧

\<PATTERN\>   匹配整个单词

\(\)    将一个或多个字符捆绑在一起,当作一个整体进行处理

[: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/bashapache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin[root@bogon ~]# grep -R /sbin/nologin *     ##递归从所以文件中查询匹配的内容test.txt:bin:x:1:1:bin:/bin:/sbin/nologintest.txt:daemon:x:2:2:daemon:/sbin:/sbin/nologin[root@bogon ~]# ip addr |grep "dynamic" |tr -s " " |cut -d " " -f3 |cut -d "/" -f1  ##过滤ip地址192.168.25.102[root@bogon ~]# ip addr |grep -E -o "([0-9]{1,3}[\.]){1,3}[0-9]{1,3}"127.0.0.1192.168.25.102192.168.25.255[root@bogon ~]# df -Th |tr -s " " |sort -k 6nr |head -1  ##查出使用率的最大百分比值的分区/dev/sda1 xfs 497M 125M 373M 25% /boot[root@bogon ~]# cat /etc/passwd |sort -t ':' -k 3n |tail -1 |cut -d ":" -f1,3,7systemd-bus-proxy:999:/sbin/nologin      ##找出uid最大值的用户,并显示用户名、UID、及shell类型

以上是“linux文本处理工具及正则表达式的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-人工智能
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯