Linux Command -- sed

sed是一个流编辑器,用于处理输入流中的文本信息,输入流可以是文件,也可以是管道中的输入。
sed的命令格式为:

sed [OPTION]... {script-only-if-no-other-script} [input-file]...

OPTION有如下参数:

-n:静默模式,不打印缓冲区中的内容,只输出操作相关的行;
-e:添加要执行的指令,用于实现一行中同时执行多条操作;
-f:将操作写到脚本文件中,然后添加脚本文件去执行;
-i:将操作后的内容写入到文件中,不打印到屏幕上;
-r:在脚本中使用扩展正则表达式。

例1:

sed -n '$p' filename

显示filename文件中的最后一行信息,如果不加”-n“参数,则会显示文件所有行的信息,最后一行的信息会出现2次。

例2:

sed -e '1p' -e '3d' filename

通过”-e“参数在一行中依次执行多条操作,显示filename中的第1行内容,删除第3行内容。

例3:

sed -f b filename

通过”-f“参数指定一个脚本文件,脚本文件中的内容是操作指令,可以有多条,按行分隔,如脚本b中的内容为”$p“,则此sed操作就是显示filename的最后一行信息,注意脚本中的指令不能用”“或”。

例4:

sed -i '$a Hello World' filename

在filename文件的最后插入一行”Hello World“,这个操作会写入到filename文件中。相对的,上面的3个操作只会打印出信息,而不会写入到文件中去。


常用操作指令:

a:添加,要添加的内容放到a的后面,内容会被添加到指定行的下一行;
i:插入,要添加的内容放到i的后面,内容会被插入到指定行的上一行;
q:退出,完成指定的操作后退出;
c:取代,取代批定行的内容,可以是一行或多行;
d:删除,删除指定的行;
s/regexp/replacement/:替换,使用replacement中的内容替换regexp中的内容,可以使用正则表达式;

例1:

sed '1a Hello World' filename
sed '$a Hello World' filename

在filename第一行后添加”Hello World“信息;
在最后一行后添加”Hello World“信息。

例2:

sed '1i Hello World' filename
sed '$i Hello World' filename

在filename第一行前添加“Hello World”信息;
在最后一行前添加“Hello World”信息。

例3:

sed '2c Hello World' filename
sed '1,5c Hello World' filename

将filename的第2行内容换为“Hello World”;
将filename的第1行至第5行内容换为“Hello World”,第1行至第5行的5行内容会变为1行“Hello World”。

例4:

sed '2d' filename
sed '1,5d' filename

删除filename的第2行内容;
删除filename的第1行至第5行内容。

例5:

sed 's/ssh/Hello/g' filename
sed 's/^ssh/Hello/g' filename

替换filename中的所有ssh为Hello;
替换filename中的行首ssh为Hello。
前者是等量替换,即写入的是什么就替换什么;后者是正则表达式替换,只有满足正则表达式条件的才会被替换。
参数“g”的作用是对一行中的所有元素进行替换,如果不加参数“g”,那每行中只有第1个相同的元素会被替换,其它的元素会被跳过。

例6:

sed -i '/bash$/d' filename

删除filename中结尾为bash的行,操作会写入到文件中。

例7:

sed -i '/^po/a football' filename

在开头是po的行后面添加“football”,操作会写入到文件中。

例8:

sed '5q' filename

打印filename文件的前5行后退出。


正则表达式元字符集:

^:行首;
$:行尾;
.:匹配一个任意字符,不能是换行符;
*:匹配0个或多个字符;
[]:匹配一个指定范围内的字符;
[^]:匹配一个不在指定范围内的字符;
&:保存搜索的字符,例如’s/port/&/g’,会将port替换为port

\<:单词的起始位,例如'/\<s/'表示以s开头的单词;
\>:单词的结束位,例如'/s\>/'表示以s结尾的单词;

x{m}:重复字符x共m次;
x{m,}:重复字符x最少m次;
x{m,n}:重复字符x最少m次,最多n次;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值