Shell正则三剑客 | sed命令

18 篇文章 0 订阅

sed命令
命令格式

sed [options] ‘{command}’ [filename]
sed [options] -f scriptfile [filename]

选项

常用选项选项说明
sed -n抑制自动输出
sed -e添加脚本
sed -f添加脚本文件
sed -i编辑文件内容
sed -n抑制自动输出
sed -i.bak修改文件同时创建.bak备份文件
sed -r使用扩展的正则表达式
常用命令参数参数说明
a在匹配后面添加
d删除
i在匹配前面添加
s查找替换
p打印
y转换
h H拷贝/添加模式空间到存放空间
g G拷贝/添加存放空间到存放空间

指令参数

a\ 当前行下面插入文本。
i\ 在当前行上面插入文本。
c\ 把选定的行改为新的文本。 d 删除,删除选择的行。 D 删除模板块的第一行。 s 替换指定字符 h
拷贝模板块的内容到内存中的缓冲区。 H 追加模板块的内容到内存中的缓冲区。 g 获得内存缓冲区的内容,并替代当前模板块中的文本。
G 获得内存缓冲区的内容,并追加到当前模板块文本的后面。 l 列表不能打印字符的清单。 n
读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。 N 追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。
p 打印模板块的行。 P (大写)打印模板块的第一行
^ 行的开始
$ 行的结尾
. 一个字符

  • 0个或多个前一个字符
    [] 方括号中的所有字符
    {} 重复次数
    () 组
    /./ 匹配至少有一个字符的行
    /…/ 匹配至少有两个字符的行
    /^#/ 匹配用#开头的行
    /^KaTeX parse error: Expected 'EOF', got '}' at position 12: / 匹配空行 /}̲/ 匹配用}结尾的行(没有空格在后面)
    /}*$/ 匹配用}结尾的行(可以有空格在后面)
    /[abc]/ 匹配小写的 a或b或c
    /^[abc]/匹配开头不是小写的a或b或c

sed命令小练习
打印操作:p命令

sed -n '5’p /etc/passwd
sed -n '1,5’p /etc/passwd
sed -n '1, ′ p / e t c / p a s s w d s e d − n ′ / r o o t / ′ p / e t c / p a s s w d s e d − n ′ / 1 / ′ p / e t c / p a s s w d s e d − n ′ i n 'p /etc/passwd sed -n '/root/' p /etc/passwd sed -n '/^1/'p /etc/passwd sed -n 'in p/etc/passwdsedn/root/p/etc/passwdsedn/1/p/etc/passwdsednin'p /etc/passwd
sed -n '/r…o/'p /etc/passwd
sed -n '/oo*/'p /etc/passwd
sed -e '1’p /111/'p -n /etc/passwd

删除操作:d命令

cat class1
zhoujielun 85 87
chenglong 87 88
liubei 90 86
xiaoli 90 86
xiaozhang 90 86
xiaowang 90 86

删除 第1行
sed '1’d class1
sed ‘1d’ class1在这里插入图片描述
删除 第1行 和 第3行
sed '1,3’d class1
删除包含 字符串xiaozhang的行
sed '/xiaozhang/'d class1
删除空白行
sed '/^$/'d class1在这里插入图片描述

删除文件最后一行
sed '$'d class1

替换文件内容

sed ‘s/[0-9]//g’ class1
sed ‘s/[a-zA-Z]//g’ class1
sed ‘s#liu#aaaaaaaaaaa#g’ class1

追加(行下追加):a\

行下追加
head -2 class2 |sed ‘/^m/a\this is a test line’
在这里插入图片描述
指定行下追加
head -5 class2 |sed ‘3a\this is a test line’
在这里插入图片描述

追加(行上追加):i\

指定行上追加
head -3 class1 | sed -i ‘3i\this is a test line’
在这里插入图片描述
匹配行上追加
head -3 class1 | sed ‘/aaaaa/i\bbbbbbbbbbbbbb’在这里插入图片描述

互换

匹配删除
sed -r ‘/cheng|liu/d’ class1
在这里插入图片描述
匹配整条行
sed -nr ‘/aaaa|this/p’ class1
在这里插入图片描述
也可以删除-r并添加转义符在这里插入图片描述
在这里插入图片描述
在行首添加字符串 aaa:
sed -r ‘s/(.*)/aaa:&/’ class1
在这里插入图片描述

更多sed用法可参考:http://man.linuxde.net/sed

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值