linux的sed工具是十分强大的,能很容易的实现在某关键词的前一行或后一行增加内容。今天在批量修改tomcat的日志时就用到了该功能。

一、在某行的前一行或后一行添加内容

具休操作如下:

#匹配行前加
sed -i '/allow 361way.com/iallow www.361way.com' the.conf.file
#匹配行前后
sed -i '/allow 361way.com/aallow www.361way.com' the.conf.file

而在书写的时候为便与区分,往往会在i和a前面加一个反加一个反斜扛 。代码就变成了:

sed -i '/2222222222/a\3333333333' test.txt
sed -i '/2222222222/i\3333333333' test.txt

测试文档:

  1 xiaoming age is 18;2 xiaohong age is 19;3 xiaohua age is 20;

测试结果:

# 在包含小明的行后面增加一行
[root@centos7 sed]# sed '/xiaoming/a\#!/bin/bash' test_sed
xiaoming age is 18;
#!/bin/bash
xiaohong age is 19;
xiaohua age is 20;# 在包含小明的行前一行增加一行
[root@centos7 sed]# sed '/xiaoming/i\#!/bin/bash' test_sed
#!/bin/bash
xiaoming age is 18;
xiaohong age is 19;
xiaohua age is 20;
[root@centos7 sed]#

这就就可以很方便的看出要在某一行前或某一行后加入什么内容 。不过经常我记不住a 、i 那个是前那个是后。我的记法是a = after ,i = in front 。这样就知道 i 是前,a 是后了。不过官方的man文件里不是这样解释的,man文件里是这样解释的:

a
text   Append text, which has each embedded newline preceded by a backslash.
i
text   Insert text, which has each embedded newline preceded by a backslash.

而且其可以配合find查找的内容处理,如下:

find . -name server.xml|xargs sed -i '/directory/i       <!--'
find . -name server.xml|xargs sed -i '/pattern="%h/a       -->'

二、在某行(指具体行号)前或后加一行内容(注意:测试未完全通过,偶尔不成功,原因待查,建议使用内容匹配定位行,然后再根据匹配到的行,在其前后添加行)

sed -i 'N;4addpdf' a.txt
sed -i 'N;4ieepdf' a.txt 

这里指定的行号是第四行 。

测试文档:略

测试结果:未通过测试

三、删除指定行的上一行或下一行

删除指定文件的上一行
sed -i -e :a -e '$!N;s/.*n(.*directory)/1/;ta' -e 'P;D' server.xml
删除指定文件的下一行
sed -i '/pattern="%/{n;d}' server.xml 

这个写起来有点长,一般如果不是shell里的需要,我更喜欢用vim去处理。另外需要注意的是,在vim里如果替换的内容里tab这样的符号是需要在编辑模式下分别按ctrl+v 和crtl+I ,而不是不停的几个空格。

shell - 在文本中的前一行或后一行添加一行内容,指定行前后增加一行内容相关推荐

  1. shell 删除文本中的重复行(sort+uniq/awk/sed) (方法=效率啊)

    From: http://churuimin425.blog.163.com/blog/static/341298772012230112956712/ 删除文本中的重复行(sort+uniq/awk ...

  2. linux awk统计文本单词,shell统计文本中单词的出现次数

    Ubuntu14.04 给定一个文本,统计其中单词出现的次数 # solution 1 grep与awk配合使用,写成一个sh脚本 fre.sh sh fre.sh wordfretest.txt # ...

  3. Shell 去掉文本中的空格

    使用sed命令 将文件'aol1'中的空格去掉然后输出到'tmpFile'文件中 sed s/[[:space:]]//g aol1 > tmpFile 转载于:https://www.cnbl ...

  4. linux中ftp修改绑定目录,Linux下添加FTP账号和服务器、增加密码和用户,更改FTP目录...

    1. 启动VSFTP服务器 A:cenos下运行:yum  install  vsftpd B. 登录Linux主机后,运行命令:"service vsftpd start" C. ...

  5. python单词个数统计_Python 统计文本中单词的个数

    1.读文件,通过正则匹配 def statisticWord(): line_number = 0 words_dict = {} with open (r'D:\test\test.txt',enc ...

  6. 算法:去除英文文本中重复单词

    要求: 假设有一段英文文本,其中有重复的单词,要求去除重复单词,只保留一个,例如"hello world hello python",程序输出为"hello world ...

  7. python怎么统计单词总数_Python【习题】:统计纯英文文本中总字数

    人生苦短,我用Python 环境:Windows 10 64-bit, python == 3.6.4 , PyCharm CE == 2018.1 声明:学习资源来自于网络,这里是自己学习笔记总结与 ...

  8. python文本分析和提取_python文本分析和提取 Python 文本内容指定字段提取

    使用python对txt文本进行分析和提取 首先,打开计算机上的pycharm编辑器,如下图所示,然后进入下一步. 开学以后,小编没有碰过电脑,第一次,这就说明了开学是多么的可怕 其次,完成上述步骤后 ...

  9. linux awk 某一列合并,利用shell中awk和xargs以及sed将多行多列文本中某一列合并成一行...

    一.问题描述 最近需要利用Shell将多行多列文本中某一列,通过指定的分隔符合并成一行.假设需要处理的文本如下: 我们主要处理的是,将用户名提取处理,合并成一行,并通过逗号进行分隔.最终的格式如下: ...

最新文章

  1. spring如何解决循环依赖
  2. p3p-header解决跨域访问cookie
  3. BJUI+SSM实现报表添加时间筛选功能
  4. Java设计模式 之 工厂方法模式
  5. 基于Vue-SSR优化方案归纳总结
  6. 敏捷需求分析及深度提升(广州 2014.1.11)
  7. 准备结婚,大家买的三金都有哪些?
  8. python:DataFrame输出为csv(Pandas的to_csv()使用)
  9. C语言libiconv编程,libIconv.lib编码库的生成和使用
  10. 发卡网源码附企业发卡网源码搭建安装教程
  11. 使用layer 弹出对话框 子父页面相互参数传递 父页面获取子页面参数实例
  12. UnExpected Error, Quitting
  13. LWIP网络开发从入门到精通
  14. 计算机网络实验:CISCO IOS 路由器基本配置
  15. 上海计算机协会-10月月赛-丙组-T5-组队竞赛
  16. 微软雅黑字体包替换XP的宋体(附下载)
  17. 2019-07-12 函数递归、二分法、匿名函数、三元表达式、内置函数
  18. 2021-01-19.湖人在两位数领先情况下被勇士逆转
  19. 华为电脑可以升级鸿蒙系统吗,华为电脑现在是鸿蒙系统吗_华为p40升级鸿蒙系统...
  20. 计算机一级胶卷出现文件异常,解决IOS相机胶卷导入照片后堆在最新照片的问题...

热门文章

  1. Scratch编程-画图模块13【寿光市青少年创意编程大赛真题】
  2. Java Web学习笔记 3 深入Servlet技术
  3. 金蝶云苍穹笔记(四)
  4. 批量部署服务器系统,自动化运维之cobbler批量部署服务器系统 | opengers
  5. 华为OD机试用Python实现 -【查找树中的元素 or 查找二叉树节点】(2023-Q1 新题)
  6. 【华为OD机试 2023最新 】 查找充电设备组合(C++ 100%)
  7. 莫名骨痛,警惕骨转移
  8. 【正点原子Linux连载】第三十五章 Linux内核顶层Makefile详解 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
  9. 开发板qt移植和交叉开发环境搭建学习笔记
  10. [R语言] 生成随机数