ShellLinux学习与应用技巧生信linux

linux - sed常用命令

2021-05-26  本文已影响0人  小小白的jotter

linux - sed常用命令

sed命令用法

linux--sed命令

sed命令详解

22.Linux sed命令详解

linux常用操作(八)-sed命令详细说明

使用语法

使用规则

sed 参数 命令 input_file

常用参数:

参数 作用
-n 取消默认 sed 输出,仅输出符合条件的行;常与sed 内置命令 p 一起使用
-i 直接把修改结果写入文件;不用 -i,sed 修改的是内存数据
-e 多次编辑不需要管道符
-r 支持扩展正则表达式

常用命令:

命令 作用
a 对文本追加,在指定行后面添加一行;多行时除最后一行外,每行末尾需用 “\n” 续行
c 用新文本修改(替换)当前行中的文本;多行时除最后一行外,每行末尾需用 “\n” 续行
i 表示插入文本,在指定行前添加一行或多行文本;多行时除最后一行外,每行末尾需用 “\n” 续行
d 删除匹配的行
p 打印匹配行的内容
s/正则/替换内容/g 匹配正则内容,然后替换内容,结尾 g 表示全局匹配

sed的正则表达式元字符

元字符 作用
\(..\) 保存已匹配的字符
& 保存查找串以便在替换串中引用
\< 词首定位符,/<love/:匹配包含以 love 开头的单词的行
\> 词尾定位符, /love>/:匹配包含以 love 结尾的单词的行
x\{m\} 连续 m 个 x
x\{m,\} 至少 m 个 x
x\{m,n\} 至少 m 个 x,但不超过 n 个 x

实例

准备文件

image-20210521155712934

打印:p 命令

打印第二行和第三行。不加 -n 的情况下,sed 会打印全文并把符合条件的行打印两遍,加上 -n 只会打印符合条件的内容

sed '2,3p' 1.txt
sed -n '2,3p' 1.txt
image-20210521160515353

打印以 This 开头的行

sed -n '/^This/p' 1.txt
image-20210524134328083

打印含有以 Th 为单词词首的行

sed -n '/\<Th/p' 1.txt 
image-20210524134753449

打印含有以 day 为单词词尾的行

sed -n '/day\>/p' 1.txt
image-20210524135129213

打印以 Th 开头,ne 结尾的行

sed -n '/Th.*ne$/p' 1.txt
image-20210524154747555

打印前四行并且打印行号;= 表示打印行号,用到不同编辑命令时,用 {} ,且不同编辑命令之间用分号分割

sed -n '1,4{=;p}' 1.txt
image-20210525154521947

打印除前四行以外的其他行,不知道一共有多少行,可以用 !反选

sed -n '1,4!p' 1.txt
image-20210525155839610

打印第一行到匹配到 third 的行

sed -n '1,/third/p' 1.txt
image-20210525160525612

打印匹配到 second 的行到匹配到 third 的行

sed -n '/second/,/third/p' 1.txt
image-20210525160707340

插入:a 命令和 i 命令

a 命令和 i 命令的使用方法相同,不同的是 a 命令是在行之后添加内容,i 命令是在行之前插入内容。

在第一行之后/之前添加 add one

sed '1a add one' 1.txt
sed '1i add one' 1.txt
image-20210525162213874

在第二行到第三行之后/之前添加 add one

sed '2,3a add one' 1.txt
sed '2,3i add one' 1.txt
image-20210525162546997

匹配到 second 的行到匹配到 third 的行之后/之前添加 add one

sed '/second/,/third/a add one' 1.txt
sed '/second/,/third/i add one' 1.txt
image-20210525162835196

在第一行之后/之前添加 add one,add two 两行,用 \n 分隔开

sed '1a add one\nadd two' 1.txt
sed '1i add one\nadd two' 1.txt
image-20210525163219648

在第一行之前加 start,在最后一行之后加 end,对单个文件进行多个操作可以用 -e

sed -e '1i start' -e '$a end' 1.txt
image-20210525163850423

删除:d 命令

删除第一行

sed '1d' 1.txt
image-20210525171452576

删除二到三行

sed '2,3d' 1.txt
image-20210525171539971

删除匹配到 last 的行

sed '/last/d' 1.txt
image-20210525171637812

替换行:c 命令

将第一行替换为第一行

sed '1c 第一行' 1.txt
image-20210525171854810

将匹配到 Monday 的行替换为星期一

sed '/Monday/c 星期一' 1.txt
image-20210525172028724

替换字符串:s 命令

使用方法:s/正则/替换内容/,常与 g 连用表示全局替换

将全文的 line 替换为 text,不加 g 只替换每一行的第一个 line

sed 's/line/text/g' 1.txt
sed 's/line/text/' 1.txt
image-20210525173036379

s 命令也可以与 p 和 -n 连用,只打印匹配到的行

sed -n 's/day/DAY/p' 1.txt
image-20210525174314732

将 is 加上双引号,也就是用 “is” 替换 is。可以用 & 号,当它用在替换字符串中的时候,代表的是原始的查找匹配数据。

sed 's/is/"&"/g' 1.txt
image-20210525174809535
上一篇 下一篇

猜你喜欢

热点阅读