sed 编辑命令

sed 编辑命令对照表

把 /etc/passwd 文件赋值到当前路径下,进行操作

cp /etc/passwd ./
cat -n passwd

  

sed 删除操作

删除 passwd 文件的第一行

sed -i '1d' passwd 

删除 1-3 行

sed -i '1,3d' passwd

删除不能登录的用户,即 /sbin/nologin

sed -i '/\/sbin\/nologin/d' passwd

删除以mail开头一直到以 ftp开头的行

sed -i '/^mail/,/^ftp/d' passwd

sed 增加操作  

在/bin/bash 行后面追加一句话 This is user which can login to system

 sed -i '/\/bin\/bash/a This is user which can login to system' passwd

行前追加 在 root 和 nginx之间所有行之前追加 AAAAAAAAAAAAAAAAAAAA

 sed -i '/^root/,/^nginx/i AAAAAAAAAAAAAAAAAAAA' passwd

  

查找passwd文件中所有root的行,读取 list 的内容追加到其后面

cat list

sed -i '/root/r list' passwd

在passwd文件中将匹配到的 /bin/bash 行写入到 /tmp/user_login.txt 文件中

 sed '/\/bin\/bash/w /tmp/user_login.txt' passwd

  

sed 修改操作  

修改:

  • s/pattern/string/ 查找并替换,查找符合pattern模式的字符串,将其替换为string 适配(一、二、三、四、五)
  • s/pattern/string/g g表示表示全部匹配
  • s/pattern/string/2g 2g表示:同一行内,只替换前两个匹配到的,剩下的不替换
  • s/pattern/string/ig 加i参数表示匹配时忽略大小写,g表示匹配到的全部替换

把 /bin/bash 全部替换为/BIN/BASH

sed -i 's/\/bin\/bash/\/BIN\/BASH/g' passwd

  

只替换第一个root为ROOT

sed -i 's/root/ROOT/' passwd

只替换 一行的第二个

cat str.txt

sed -i 's/HADOOP/hadoop/2' str.txt

反向引用

把匹配到的内容原封不动的保留下来 

 cat file.txt

sed -i 's/Had..p/&s/g' file.txt

\1 也可以表示前面匹配到的内容 (比 & 更加灵活)

sed -i 's/\(had..ps\)/\1R/g' str.txt

定义变量的时候如果使用单引号 ' 不会引用变量,注意需要使用双引号"$var"

sed 命令用法总结

查询:

  • p 打印

删除:

  • d 删

增加:

  • a 匹配到的行后追加内容
  • i 匹配到的行前追加内容
  • r 将后面指定文件的内容追加到匹配到的行后面
  • w 将匹配到的行内容另存到其他文件中

修改:

  • s/pattern/string/ 查找并替换,查找符合pattern模式的字符串,将其替换为string 适配(一、二、三、四、五)
  • s/pattern/string/g g表示表示全部匹配
  • s/pattern/string/2g 2g表示:同一行内,只替换前两个匹配到的,剩下的不替换
  • s/pattern/string/ig 加i参数表示匹配时忽略大小写,g表示匹配到的全部替换

其他编辑命令:

  • = 显示行号

什么是反向引用

  • &和\1 引用模式匹配到的整个串

在file中搜寻以1开头,然后跟两个任意字符,以e结尾的字符串

sed "s/1..e/&r/g" file

  

和上面实现一样的功能,使用\1代表搜寻到的字符串

sed "s/\(1..e\)/\1r/g" file

上面两种方式实现了一样的功能,分别使用&和\1引用前面匹配到的整个字符串 两者区别在于&只能表示匹配到的完整字符串,只能引用整个字符串:而\1可以使用()对匹配到的字符串进行二次操作

例如:如果我们仅想要替换匹配到的字符串的一部分,name必须使用\1这种方式,不能使用&

  

sed中引用变量时注意事项:

  • 1、匹配模式中存在变量,则建议使用双引号
  • 2、sed中需要引入自定义变量时,如果外面使用单引号,则自定义变量也必须使用单引号

最新文章

  1. salesforce 零基础学习(四十八)自定义列表分页之Pagination基类封装 ※※※
  2. linux head、tail、sed、cut、grep、find
  3. php编码规范
  4. Asp.net中WebForm 与 MVC的架构区别
  5. C# 模拟鼠标(mouse_event)
  6. TFS2008 安装图解(详细版本)(转载)
  7. Hello Hibernate
  8. 在PyQt中直接使用ui文件并加载qrc资源文件
  9. 2875: [Noi2012]随机数生成器 - BZOJ
  10. GCC编译器入门
  11. Sublime Text 2 插件
  12. PCI 总线学习笔记
  13. Scilab 的画图函数(1)
  14. 函数之局部变量和使用global语句
  15. hdu 5868 Polya计数
  16. redis在java客户端的操作
  17. Google 以 Flutter 作为原生突破口,移动端即将统一了
  18. jieba 库的使用和好玩的词云
  19. bootstrap3中container与container_fluid的区别
  20. hash值重写,就是以自己定义的规则来显示hash值

热门文章

  1. 给APK签名,修改签名
  2. MVC4笔记 RedirectResult,RedirectToRoute
  3. jQuery调用WebService返回JSON数据
  4. docker安装fastdfs碰到storage的IP地址映射宿主地址问题
  5. kubectl exec 执行 容器命令
  6. C# 文档注释规范
  7. 热力图heatmap使用
  8. HTTP权威指南-URL与资源
  9. shrio学习笔记
  10. CSS3 实现别样图型