Linux 正则表达式与文件处理

grep

grep [-acinv] [--color=auto] '查找字符串' filename

参数:
- -a:将binary文件以text文件的方式查找数据
- -c:计算找到‘查找字符串’的次数
- -i:忽略大小写
- -n:顺便输出行号
- -v:反向选择,即显示出没有‘查找字符串’内容的那一行
- –color=auto:将找到的关键字部分加上颜色显示

‘查找字符串’
- 查找特定字符串
- 利用中括号[]来查找集合字符
- 行首与行尾字符^$
- 任意一个字符.与重复字符*
- 限定连续RE字符范围{}

特殊符号代表意义
[:alnum:]代表英文大小写字符及数字,即0-9,A-Z,a-z
[:alpha:]代表任何英文大小写字符,即A-Z,a-z
[:blank:]代表空格键与[tab]键
[:cntrl:]代表键盘上面的控制按键,包括CR,LF,Tab,Del等
[:digit:]代表数字,0-9
[:graph:]除了空格符(空格和[tab])外的所有其他按键
[:lower:]小写字符,a-z
[:print:]代表任何可以被打印出来的字符
[:punct:]代表标点符号,即” ’ ? ! ; : # $
[:upper:]代表大写字符 A-Z
[:space:]代表任何会产生空白的字符,包括空格符 [Tab] CR等
[:xdigit:]代表十六进制的数字类型,因此包括0-9,A-F,a-f的数字与字符

RE字符意义
^word待查找的字符串(word)在行首
word$待查找的字符串(word)在行尾
.代表一定有一个任意的字符
\转移字符
*重复零个到无穷多个的前一个字符
[list]从字符集合的RE字符里面找出想要选取的字符
[n1-n2]从字符集合的RE字符里面找出想要选取的字符范围
[^list]从字符集合的RE字符里面找出不要的字符串或范围
\{n,m\}连续n到m个的前一个RE字符,若为\{n\}则是连续n个的前一个RE字符,若为\{n,\}则是连续n个以上的前一个RE字符

扩展正则表达式 egrep or grep -E

RE字符意义
+重复一个或一个以上的前一个RE字符
?零个或一个的前一个RE字符
|用 或 的方式找出数个字符串
()找出“组”字符串
()+多个重复组的判别

sed

可以将数据进行替换、删除、新增、选取特定行等功能。

搭配cat和管道处理文本文件

sed [-nefr] [动作]

参数
- -n:使用安静模式
- -e:直接在命令行模式上进行sed的动作编辑
- -f:直接将sed的动作写在一个文件内,-f filename则可以执行filename内的sed动作
- -r:sed的动作支持的是扩展型正则表达式的语法(默认是基础正则表达式语法)
- -i:直接修改读取文件内容,而不是由屏幕输出。

动作说明: [n1 [,n2]] function
例如动作需要在10行到20行之间进行,则“10,20[动作行为]”

function参数:
- a: 新增,a的后面可以接字符串,这些字符串会在目前的一行出现
- c:替换,c的后面接字符串,替换n1,n2之间的行!
- d: 删除
- i: 插入,i的后面接字符串,会在目前的一行出现
- p: 打印,将某个选择的数据打印出来,通常配合参数sed -n使用
- s: 替换,可以直接进行替换的工作,通常这个s的动作可以搭配!!

部分数据的查找并替换的功能

sed 's/要被替换的字符串/新的字符串/g'


awk

awk也是一个好用的数据处理工具。相比于sed常常用作于一整行的处理,awk则比较倾向于将一行分成数个“字段”来处理。因此,awk相当适合处理小型的数据!

awk '条件类型1{动作1} 条件类型2{动作2}...' filename

例子:last -n 5 | awk '{print $1 "\t" $3}'

流程:
- 读入第一行,并将第一行的数据填入 0() 1(第一列)、$2等变量中;
- 依据条件类型的限制,判断是否需要进行后面的动作
- 做完所有的动作与条件类型
- 若还有后续的“行”的数据,则重复上面1-3的步骤,直到所有的数据都读完为止。

awk以行为一次处理的单位,以字段为最小处理单位。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值