Linux sed 命令


title: sed命令
top: 43
date: 2021-01-15
tags:

  • sed
    categories:
  • linux

sed命令

Linux sed 命令是利用脚本来处理文本文件。

sed 可依照脚本的指令来处理、编辑文本文件。

Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。

语法

sed [-hnV][-e<script>][-f<script文件>][文本文件]

参数说明

  • -e <script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。
  • -f<script文件>或–file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
  • -h或–help 显示帮助。
  • -n或–quiet或–silent 仅显示script处理后的结果。
  • -V或–version 显示版本信息。

动作说明

  • a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
  • c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
  • d :删除,因为是删除啊,所以 d 后面通常不接任何东东;
  • i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
  • p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
  • s :取代,可以直接进行取代的工作。

  • p:print显示查找的结果
查找格式
2p指定行号进行查找
1,5p指定行号范围进行查找
/str/p类似grep的过滤,支持正则
/str1/,/str2/p范围过滤
1,/str/p混合过滤
# 显示文件第3行的内容
sed -n 3p tsed 
# 显示文件所有内容,并重复显示第3行内容 || 无-n
sed 3p tsed 
# 显示从带ssh的行开始,到带passwd的行结束的内容
sed '/ssh/,/passwd/p' tsed

####################
# !的作用,对操作取反
sed -nr '/^$|#/!p' tsed # 显示非空行

  • d:delete删除(不显示打印,并非对文件直接操作);与p操作类似
查找格式
2d指定行号进行删除
1,5d指定行号范围进行删除
/str/d类似grep的过滤,支持正则
/str1/,/str2/d范围过滤
1,/str/d混合过滤
sed '/^$/d; /^\s*$/d' tsed
 
# `/^$/d`    => remove empty line
# `/^\s*$/d` => delete lines which may contain white space

  • s:substitute替换,替换格式:s///g \\ s###g \\ s@@@g \\ s+++g

  • g: global全局,s默认只替换每行第一个匹配的内容,s###g则替换每行所有匹配的内容

  # 将空白行替换未. // ^$ 匹配空行
  sed 's/^$/./g' tsed
  • 后向引用
echo "echo content: root@bgape002.top" > efile
sed -r 's/:(.*)@(.*)$/**\2: \1/g' efile
# echo content**bgape002.top:  root  // 将匹配到的字符串替换成fmt2的形式('s/fmt1/fmt2/g')

  • c \\ a \\ i
命令含义
c替代该行内容
a在指定的行或每一行追加内容(行后另起一行
i向指定的行或每一行插入内容(行前另起一行
# 3行后追加内容hahahaha
sed '3a hahahaha' tsed
# 每一行都追加hahahaha
sed 'a hahahaha' tsed
# 1-3行后追加内容hahahaha
sed '1,3a hahahaha' tsed

多点编辑

# 一条sed命令,删除/etc/passwd第三行到末尾的数据,并把bash替换为blueshell
nl /etc/passwd | sed -e '3,$d' -e 's/bash/blueshell/'

sed的正则表达式

  • sed中使用扩张正则表达式,需要添加选项-r

    • 基本正则表达式包含:^,$.,[],*
    • 扩展正则表达式包含:(),{},?,+,|
  • 特殊字符类

    • 用于匹配特定类型的字符
    [:blank:] 空格(space)与定位(tab)字符
    [:cntrl:] 控制字符
    [:graph:] 非空格(nonspace)字符
    [:space:] 所有空白字符
    [:print:] 可显示的字符
    [:xdigit:] 十六进制数字
    [:punct:] 所有标点符号
    [:lower:] 小写字母
    [:upper:] 大写字母
    [:alpha:] 大小写字母
    [:digit:] 数字
    [:alnum:] 数字和大小写字母
    

参考链接

[1] Linux sed 命令

[2] Linux三剑客超全超详情教程(grep、sed、awk)

>

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值