文本处理三剑客命令初探

sed

语法

sed 选项 "定位+命令" 文件路径

流式编辑器,主要擅长对文件的编辑操作,我们可以事先定制好编辑文件的命令,然后让sed 自动完成对文件的整体编辑

选项

-n     取消默认输出

-r     支持扩展正则元字符

-i     立即编辑文件

定位

行定位

1  定位到第一行

1,3代表从第一行到第三行

不写定位代表定位所有行

正则表达式定位

/egon/     包含egon的行

/^egon/     以egon开头的行

/egon$/     以egon结尾的行

数字加正则表达式定位

1,8p   代表打印1到8行

1,/egon/p     则代表取从第一行到首次匹配到/egon/的行

命令

a     新增,a的后面可以接字符串,而这些字串会在新的一行出现(目前的下一行)


c     取代,c的后面可以接字串,这些字串可以取代n1,n2之间的行

d     删除,因为是删除啊,所以d后面通常不接任何咚咚

i     插入,i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)

p     打印,亦即将某个选择的数据印出。通常phi与参数sed -n 一起运行~

s     取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如1,20s/old/new/g 就是啦

awk

awk主要用于处理有格式的文本,例如/etc/passwd这种

用法

awk      选项 'pattern{action}' 文件路径

选项

-F   指定分隔符

工作流程

awk -F '{print $1,$3}' /etc/passwd

1、awk会读取文件的一行内容然后赋值给$0

2、然后awk会以-F指定的分隔符将该行切分成 n 段,最多可以达到 100段,第一段给$1,第二段给$2,依次类推

3、print输出该段的第一段和第三段,逗号代表输出分隔符,默认与-F保持一致

4、重复步骤1,2,3直到文件内容读完

内置变量

$0      一整行内容

NR     记录号,等同于等号

NF     以-F分隔符分割的段数

pattern可以是

正则

/正则/      # 该行内容匹配成功正则

$1 ~ /正则/     # 第一段内容匹配成功正则

$1 !~ /正则/     #第一段内容没有匹配成功正则

比较运算

NR >= 3 && NR <=5    #3到5行

$1 == 'root'     #第一段内容等于root

action可以是

print $1,$3

grep

grep 擅长过滤内容

grep也支持管道,我们可以发现三剑客命令都支持管道

用法

grep 选项 '正则' 文件路径

选项

-n      在过滤出的每一行前面加上它在文件中的相对行号

-i     忽略大小写

-color     颜色

-l     如果匹配成功,则只将文件名打印出来,失败则不打印
       通常-rl 一起用,grep -rl 'root' /etc

-R.-r     递归

示例

[root@localhost ~]# grep '^root' /etc/passwd
root:x:0:0:root:/root:/bin/bash

[root@localhost ~]# grep -n 'bash$' /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
44:egon:x:1000:1000:egon:/home/egon:/bin/bash

[root@localhost ~]# grep -rl 'root' /etc 
原文地址:https://www.cnblogs.com/ZhZhang12138/p/14886131.html