← 返回博客 学习笔记 Linux RHCE RHCE:高级文本处理 2026年07月04日 · 52 阅读 ## 文本处理工具 ### 文本查看工具 cat 查看文本内容,合并文本内容(cat后面可以接入多个文件) `-n`显示行数序列号 `-A`显示特殊字符(人眼不可兼得) `more`分页查看文件 `less`分页查看文件(可以搜索,man手册使用的是less,可以使用v标记,过滤关键字) 我感觉很鸡肋,我为什么不用vi或者vim呢? `head` 查看文本的开头内容,默认为10行(`-n`参数可以设置多少行) ``` 输出开头的前10行 head -n 10 file | cat -n 查看除了末尾10行的其他内容 head -n -10 file ``` `tail`查看文本的末尾内容,默认为10行 ``` 输出末尾的10行 tail -n 10 file | cat -n 查看除了开头10行的其他内容 tail -n +10 file ``` `-f`实时监控文件的内容(可以做日志监控等),我感觉service的服务监控就是靠这样的 ``` 查看某文件50行-70行的内容 固定公式:head -n [最大的行数] [文件名] | tail -n +[最小的行数] 实例:head -n 70 file | tail -n +50 ``` 我再Debian中实测的实例 ``` root@VM-0-4-debian:~# cat /etc/passwd -n 1 root:x:0:0:root:/root:/bin/bash 2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin 3 bin:x:2:2:bin:/bin:/usr/sbin/nologin 4 sys:x:3:3:sys:/dev:/usr/sbin/nologin 5 sync:x:4:65534:sync:/bin:/bin/sync 6 games:x:5:60:games:/usr/games:/usr/sbin/nologin 7 man:x:6:12:man:/var/cache/man:/usr/sbin/nologin 8 lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin 9 mail:x:8:8:mail:/var/mail:/usr/sbin/nologin 10 news:x:9:9:news:/var/spool/news:/usr/sbin/nologin 11 uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin 12 proxy:x:13:13:proxy:/bin:/usr/sbin/nologin 13 www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin 14 backup:x:34:34:backup:/var/backups:/usr/sbin/nologin 15 list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin 16 irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin 17 _apt:x:42:65534::/nonexistent:/usr/sbin/nologin 18 nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin 19 systemd-network:x:998:998:systemd Network Management:/:/usr/sbin/nologin 20 dhcpcd:x:100:65534:DHCP Client Daemon:/usr/lib/dhcpcd:/bin/false 21 systemd-timesync:x:991:991:systemd Time Synchronization:/:/usr/sbin/nologin 22 messagebus:x:990:990:System Message Bus:/nonexistent:/usr/sbin/nologin 23 sshd:x:989:65534:sshd user:/run/sshd:/usr/sbin/nologin 24 _chrony:x:101:104:Chrony daemon:/var/lib/chrony:/usr/sbin/nologin 25 lighthouse:x:1000:1000::/home/lighthouse:/bin/bash 26 www:x:1001:1001::/home/www:/sbin/nologin 27 mysql:x:1002:1002::/home/mysql:/sbin/nologin 28 bt-monitor:x:999:989::/home/bt-monitor:/sbin/nologin 29 xianchu:x:1003:1003::/home/xianchu:/bin/sh root@VM-0-4-debian:~# head -n 16 /etc/passwd | tail -n +7 man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin ``` --- ### 文本过滤工具 `grep`通过关键字过滤文件 `grep` 过滤输出的是行 `-i`忽略大小写 `-o`只显示匹配关键字的内容 `-c`可以直接输出行数 `-q`静默输出,不显示任何内容(通过在shell中使用,使用 `echo $?`判断,输出为0成功,非0失败) `-v`取反,不匹配指定关键字的行 `-Ax`将匹配的行数以及下面的x行打印出来 `-Bx`将匹配的行数以及上面的x行打印出来 `-Cx`将匹配的行数以及上下面的x行打印出来 `-r`通过文件的内容搜索文件(神了) `-l`只列出文件名称(搭配`-r`使用,如果文件这一行内容过多) `--color=auto` 输出时关键字高亮显示 ### 正则表达式 匹配字符串的规律,通过正则能够实现更多复杂的过滤 #### 基本正则 - `^` 以xxx开头的字符 - `$`以xxx结尾的字符 - `\<`在字(字母、数字、下划线组成)的开始进行匹配 - `\>`在字的结尾进行匹配 - `.`匹配任意单个字符(`..`为两个,累加形式) - `[abc]`匹配括号里的任意单个字符 - `[^abc]`取反,不匹配括号里任意的单个字符 - `[a-z] / [0-9]`对a-z或0-9之间的字符进行匹配 - `\`转义符,去掉后面一个字符的特殊含义 - `*`表示匹配前一个字符0次或多次 - `.*`表示匹配所有 #### 扩展正则 使用扩展正则必须使用 `grep -E`或者 `egrep` - `+`对前一项进行一次或多次匹配 - `?`对前一项进行零次或一次匹配 - `{x}`对前一项进行x次重复匹配 - `{,x}`对前一项进行最多x次匹配 - `{x,}`对前一项进行最少x次匹配 - `{x,y}`对前一项进行最少x次,最多y次匹配 - `s|t`表示匹配s或者t中的一个,同时过滤两个关键字 - `(abc)`将括号里的内容作为一个整体匹配 ## `cut`过滤列和字段 `grep`过滤出来的时行,`cut`过滤的是列 `-d`指定分隔符 `-f`指定列数 `-c`提取指定数量的字符(例如:1-2,3-4,1-5) `awk '{print $2}'`默认使用空格为分隔符 `-F`为指定分隔符 ## 文本分析工具 ### `wc` 统计文件的行数、单词数、字节数(文件的大小 我感觉蛮鸡肋的 ``` wc /etc/passwd [行数] [单词数] [字节数] [文件名] wc -l 查看行数 也可以搭配ls使用(统计文件数量 ls -l | wc -l ``` ### `sort` 文本排序工具,默认使用字符表方式排序 - `-n`以数字方式排序(从小到大 - `-t`指定分隔符 - `-k`指定列数 - `-r`反向排序(降序,通常和-n一起使用) - -`f`忽略大小写 - `-u`去重,去除重复的内容 `uniq` 纯去重工具,但只能去掉相邻的两行,一般搭配sort的数字排序功能联合使用(很鸡肋的工具,sort原本就包含去重 `uniq -c` 统计文件中重复的内容 ### `diff` 与 `vimdiff` 文件比较工具 我倾向于使用`vimdiff`,是图形化的,来源自`vim-enhanced`软件包 a添加、c修改、d删除 ### `tr`文本转换工具 用来做字符转换 ``` echo adb | tr a-z A-Z echo 123 | tr 1-3 a-z 删除字符13,在屏幕上删除指定字符,源文件不做修改 tr -d 13 tr -d user < user.txt ``` ← 上一篇 RHCE:IO管道和Vim编辑器高级特性 下一篇 → RHCE:sed流编辑器和shell基础