微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

shell编程中的正则表达式和文本处理工具

1. 常规匹配

一串不包含特殊字符的正则表达式匹配它自己

cat 目标文档 | grep 需查找的字符

2. 常用特殊字符

2.1 特殊字符:^

^匹配一行的开头

grep ^a

会匹配出所有a开头的内容

2.2 特殊字符:$

$匹配一行的结束

grep a$

会匹配出所有以a结尾的内容
^$会匹配出所有的空行

2.3 特殊字符:.

.匹配一个任意的字符

grep x..y

会匹配出xaby xvcy等的所有行

2.4 特殊字符:*

*不单独使用,他和上一个字符连用,表示匹配上一个字符 0 次或多次

grep x*y

会匹配出xy xxy xxxy等的所有行
^a.*b$会匹配出以a开头,以b结束的所有行,ab间的内容.*,表示随便是什么内容都可以

2.5 字符区间(中括号):[]

[]表示匹配某个范围内的一个字符

格式 功能
[6,8] 匹配 6 或者 8
[0-9] 匹配一个 0-9 的数字
[0,9]* 匹配任意长度的数字字符串
[a-z] 匹配一个 a-z 之间的字符
[a-z]* -匹配任意长度的字母字符串
[a-c, e-f] 匹配 a-c 或者 e-f 之间的任意字符

2.6 特殊字符:\

\表示转义,和特殊字符组合使用,比如grep '\$'就可以匹配出带有$内容
注意需要使用单引号将表达式引起来

3. 文本处理工具

3.1 cut

通过cut [选项参数] filename的方式就可以对目标文件进行特定裁剪

格式 功能
-f 列号,提取第几列
-d 分隔符,按照指定分隔符分割列,认是制表符“\t”
-c 按字符进行切割 后加加 n 表示取第几列 比如-c 1

先创建一个hello_world.sh文件
执行cut -d " " -f 1 hello_world.sh就会以下内容,表示按制表符切分文件,并取第一列

#!/bin/bash

echo

执行cut -d "/" -f 1 hello_world.sh就会得到以下内容,表示按/切分文件,并取第一列

#!

echo "hello world"

执行cut -c 1-4 hello_world.sh就会得到以下内容,表示按字符切割,取第1位到第4位字符

#!/b

echo

3.2 awk

通过awk [选项参数] '/pattern1/{action1} /pattern2/{action2}...' filename的方式就可以对目标文件进行特定裁剪
其中pattern表示 awk 在数据中查找的内容,就是匹配模式
action表示在找到匹配内容时所执行的一系列命令

格式 功能
-F 指定输入文件分隔符
-v 赋值一个用户定义变量
内置变量 功能
FILENAME 文件
NR 已读的记录数(行号)
NF 浏览记录的域的个数(切割后,列的个数)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐