文本三剑客之sed

(1)sed命令的基本用法

(1)sed [options] {sed-commands} {input-file}

sed -n 'p' test.txt

(2)执行多个命令使用-e参数

sed [ options ] –e {sed-command-1} –e {sed-command-2} {input-file}

(3)sed脚本执行流程

执行脚本需要使用-f 参数

从指定文本进行  读取  执行  打印   重复

sed脚本是将命令写入到一个文件当中,执行命令时调用

读取一行内容到模式空间当中,模式空间是sed一个临时缓存,用于存放读取到的内容,然后在模式空间执行对应的命令,有多个命令那就依次执行。然后打印模式空间的内容到终端,然后清空模式空间,然后重复操作,直至没有行内容可以读取了。

(4)打印模式模式空间的内容使用p,通常搭配-n参数

因为p只打印模式空间里的内容,sed会默认输出匹配到的内容,若是不使用-n参数来屏蔽sed的默认输出,则终端会输出两次内容。

(5)修改匹配范围

可以使用逗号、加号、和波浪号来修改地址范围。

sed   -n   '1,3 p' test.txt    打印test.txt文件的1到3行的内容

sed   -n   '1~3 p' test.txt    从打印test.txt文件的第一行开始,每隔3行打印一次

sed   -n   '1+3 p' test.txt    打印test.txt文件的第一行开始后面的三行内容

加号+配合逗号使用,可以指定相的若干行,而不是绝对的几行。

如 n,+m 表示从第 n 行开 始后的 m 行

同时,匹配范围也可以匹配指定的字符串作为范围的开头和结尾。

(6)删除行使用参数d

打印指定文件的内容并删除对应的行内容到终端。

(7)把模式空间的内容保存输出到指定的文件当中

sed   '2   w   test1.txt'   test.txt

将test.txt 文件的第二行内容保存到test1.txt文件。并且在屏幕上显示内容,若想不想显示内容,则添加-n参数。

(8)sed的替换命令s

sed   ‘[address-range|pattern-range] s/original-string/replacement-string/[substitute-flags]’ input file

address-range 或 pattern-range(即地址范围和模式范围)是可选的。

如果没有指 定,那么 sed 将在所有行上进行替换。

s 即执行替换命令 substitute  original-string 是被 sed 搜索然后被替换的字符串,它可以是一个正则表达式  replacement-string 替换后的字符串 substitute-flags 是可选的

sed  's/A/a/' test.txt 

将test.txt文件中所有行的大写A替换成小写的a

(9)全局标志 g

sed  's/A/a/g' test.txt 

将test.txt文件中所有的大写A替换成小写的a

(10)忽略大小写 i

使用i参数则直接会修改输入的文件内容,使用前思考或者备份原文件。

替换标志 i 代表忽略大小写。

sed   -i   's/a/b/g'  test.txt 

将该文件中所有的大小写a替换成小写b

(11)sed替换命令分界符   

默认的分界符为   /

但我们如果要更改或者使用分界符的时候,就需要使用 \  来转义,也可以用@ # 等来转义。

$ sed 's/\/usr\/local\/bin/\/usr\/bin/' path.txt

(12)&,获取匹配到的模式

$ sed 's/^[0-9][0-9]/[&]/g' test.txt

[10],John Doe,CEO

[12],Jason Smith,IT Manager

(13)正则表达式

行的开头 ( ^ ) ^ 匹配每一行的开头

行的结尾 ( $ ) $匹配行的结尾。

单个字符 ( . ) 元字符点 . 匹配除换行符之外的任意单个字符。

匹配 0 次或多次 ( * ) 星号*匹配 0 个或多个其前面的字符。如:1* 匹配 0 个或多个 1

匹配一次或多次 ( \+ ) “\+”匹配一次或多次它前面的字符,例如 空格\+ 或 “ \+”匹配至少一个或多个空格。

零次或一次匹配 ( \? ) \?匹配 0 次或一次它前面的字符

转义字符 ( \ ) 如果要在正则表达式中搜寻特殊字符(如:*,.),必需使用\来转义它们

字符边界 ( \b ) \b 用来匹配单词开头(\bxx)或结尾(xx\b)的任意字符,因此\bthe\b 将匹配 the,但不匹配 they. \bthe 将匹配 the 或 they

(14)sed的附加命令

a

使用命令 a 可以在指定位置的后面插入新行。

i

插入命令 insert 命令和追加命令类似,只不过是在指定位置之前插入行

c

修改命令 change 可以用新行取代旧行。

=

会显示行号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值