学习目录
- 管道
- 正则表达式
- awk
- sed
- grep
一、管道
Linux提供管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入
示例:
echo “hello123” | grep ‘hello’
二、正则表达式
正则表达式是记录文本规则的代码


三、grep
根据用户指定的模式(pattern)对目标文本进行过滤,显示被模式匹配到的行
命令形式:
- grep[OPTIONS] PATTERN [FILE…]
选项:
- -v 显示不被pattern匹配到的行
- -i 忽略字符大小写
- -n 显示匹配的行号
- -c 统计匹配的行数
- -o 仅显示匹配到的字符串
- -E 使用ERE,相当于egrep
实战1:
-
查找文件内容包含root的行数
- grep -n root test.txt
-
查找文件内容不包含root的行
- grep -nv root test.txt
实战2:
- 查找以s开头的行
- grep ^s test.txt
- 查找以n结尾的行
- grep n$ test.txt
四、sed
sed是流编辑器,一次处理一行内容
sed处理流程:
1.首先将一行存储到一个模式空间内
2.sed命令处理
3.显示在屏幕上
4.然后清空模式空间
循环处理上述步骤,直到全部处理完
命令形式:
sed [-hn…][-e<script>][-f<script FILE>][FILE]
命令解析:
- sed [-hn…] [ -e<script>][-f<script文件>][文本文件]
- -h显示帮助
- -n仅显示script处理后的结果
- -e<script>以选项中指定的script来处理输入的文本文件
- -f<script文件>以选项中指定的script文件来处理输入的文本文件
常用动作
- a:新增 sed -e ‘4 a newline’
- c:取代 sed -e ‘2,5c No 2-5 number’
- d:删除 sed -e ‘2,5d’
- i:插入 sed -e ‘2i newline’
- p:打印 sed -n ‘/root/p’
- s:取代 sed -e ‘s/old/new/g’ 其中/g表示全局匹配
查看帮助
- man sed
- sed -h
用j可以下翻页,用k可以向上翻页,用‘/’斜杠后面加想查找的字符,可以查找匹配内容,然后按n可以想下找匹配项,按N可以向上查找匹配项
实战1
- 在第四行后添加新字符串
- sed -e ‘4 newline testfile’ test.txt
实战2
一、在第二行前加上newLine
- sed ‘2a drink tea’ test.txt
二 、在第二行前加上newline
- sed ‘2i drink tea’ test.txt
实战3
一、全局替换
- sed -e ‘s/root/hello/g’ test.txt
二、直接修改文件内容(加了-i参数可以直接修改文件内容,不加是在模式控件内修改)
- sed -i ‘s/root/hello/g’ test.txt
五、awk
定义:把文件逐行读入,以空格为默认分隔符将每行切片,切开的部分再进行后续处理
流程:
1.把行作为输入,并赋值给$0
2.将行切段,从$1开始
3.对行匹配正则/执行动作
4.打印内容
上述流程循环,处理完所有行
命令形式:
- awk ‘pattern + action’ [FILE]
命令解析
- awk ‘pattern + action’ [filenames]
- -pattern 正则表达式
- -action 对匹配到的内容执行的命令(默认为输出每行内容)
常用参数
- FILENAME awk浏览的文件名
- BEGIN 处理文件之前要执行的操作
- END 处理文本之后要执行的操作
- FS 设置输入域分隔符,等价于命令行 -F选项
- NF 浏览记录的域的个数(列数)
- NR 已读的记录数(行数)
- OFS 输出域分隔符
- ORS 输出记录分隔符
- RS 控制记录分隔符
- $0 整条记录
- $1 表示当前行的第一个域……以此类推
实战1
1、搜索/etc/passwd有root关键字的所有行,并显示对应的shell
- awk -F: ‘/root/ {print $7}’ /etc/passwd
2、打印/etc/passwd/的第二行信息 - awk -F: ‘NR==2{print $0}’ /etc/passwd
实战2
1、使用begin加入标题
- awk ‘BFGIN {print “begin begin”} {print $1,$2}’ /etc/passwd
2、自定义分隔符 - echo ‘111 222|333 444|555 666’ | awk ‘BEGIN{RS="|"}{pirnt $0}’
Linux文本处理利器
本文详细介绍Linux下管道、正则表达式、grep、sed及awk的使用技巧,通过实战案例展示如何高效处理文本文件,适用于系统管理员及开发人员。

被折叠的 条评论
为什么被折叠?



