当前位置:   article > 正文

sed常用方法_sed -i命令

sed -i命令

sed的几个参数

学习资料:https://blog.51cto.com/oldboy/5436668

参考: https://www.linuxcool.com/sed

https://wangchujiang.com/linux-command/c/sed.html

https://zhuanlan.zhihu.com/p/134651377

  • a 追加,在指定行后添加一行或多行文本
  • d 删除指定的行
  • c 替换指定行
  • i 插入,在指定行前添加一行或者多行文本
  • p 打印模式空间内容,通常p会与选项-n一起使用

打印指定行sed -n

# 打印第3行
sed -n '3p' filename

# 打印第3行到最后一行的内容
sed -n '3,$p' filename
  • 1
  • 2
  • 3
  • 4
  • 5

删除行d

# 删除第5行
sed -i '5d' filename

# 删除第N到M行
sed -i 'N,Md' filename

# 删除最后一行
sed -i '$d' filename
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

删除包含字符串的行

# 删除包含"cat"的行
sed -i '/cat/d' filename
  • 1
  • 2

插入i(找到的行前添加)和追加a(找到的行后添加)

# 在第4行前插入test
sed '4i test' filenam

# 在以cat开头的行前插入test
sed '/^cat/i test' filename

# 在第4行后追加test
sed '4a test' filename

# 在以cat开头的行后追加test
sed '/^cat/a test' filename
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在第一行插入和最后一行插入

# 这是在第一行前添加字符串
sed '1i\添加的内容' file

# 这是在最后一行行前添加字符串
sed '$i\添加的内容' file

# 这是在最后一行行后添加字符串
sed '$a\添加的内容' file
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

替换字符串

# 常用写法 sed "s///"
sed "s/原字符串/替换字符串/" filename

# 修改SELinux的状态为permissive
# 匹配以SELINUX=开头的任何字符
## ^ 以什么开头
## .* 匹配所有字符
sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config

# 替换字符串,g表示全局替换
# 替换apt源地址
sed -i "s/cn.archive.ubuntu.com/mirrors.aliyun.com/g" /etc/apt/sources.list

# 高级用法
## .* 匹配所有字符
sed -ri 's#(SELINUX=).*#\1disabled#' /etc/selinux/config
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

测试模式

# sed不加参数运行时并不会真的生效
## 测试删除第5行
sed '5N' filename

# 删除第5行(生效)
sed -i '5N' filename
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

sed取消注释

原文链接:https://blog.csdn.net/x10230729/article/details/103375550

注释掉含有“字符串”的行

# 注释掉含有“swap”的行
## & 符号在sed命令中代表上次匹配的结果。
sed -i 's/^[^#].*swap*/#&/g' fstab
  • 1
  • 2
  • 3

取消含有字符串swap的行最前面的注释符号#

# 取消含有字符串swap的行最前面的注释符号#
## //两杠表示空格,以空格替换#,等价取消#。
sed -i '/^#.*swap/s/^#//g' fstab
  • 1
  • 2
  • 3
# 删除注释行
sed -i '/^#/d' file1
  • 1
  • 2
# 删除空格行
sed -i '/^$/d' file1
  • 1
  • 2
# file1:删除每行第一个字符
sed -i 's/.//'
  • 1
  • 2
# 删除每行前两个字符
sed  -i 's/..//' file1
  • 1
  • 2

删除每行前k个字符,例如k=5

# 删除每行前k个字符,例如k=5 
sed  -i 's/.\{5\}//' file1
  • 1
  • 2

将文件的1-4行注释掉

# 将文件的1-4行注释掉
sed -i '1,4s/^/#/g' file1
  • 1
  • 2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/323061
推荐阅读
相关标签
  

闽ICP备14008679号