我想创建一个sed命令,在文件中查找匹配模式的第一行,删除所有该行或将其全部替换为其他文本.我不想匹配所有的行,因为规则是匹配它的一部分.

我怎么能用sed做到这一点?

例如:

myline 1 is pretty

line 2 is ugly

myline 111 is nice

我想删除包含“1 is”的第一行

更新:我的行可能包含“/”和“

问候

FAK

解决方法:

我倾向于使用awk来处理更复杂的任务,它比sed更强大,具有适当的循环和选择结构(为了可读性而扩展,如果你愿意,你可以将它压缩回一行):

pax$echo '

xyz

myline 1 is pretty

line 2 is ugly

myline 111 is nice' | awk '

/1 is/ {if (f) {print} else {f = 1}}

!/1 is/ {print}'

xyz

line 2 is ugly

myline 111 is nice

对于任何不匹配模式的行(!/ 1是/),它只是打印它.

对于与模式匹配的行,如果设置了标志f(它最初未设置),则将它们全部打印出来.当标志未设置且遇到匹配的行时,它会设置标志并不打印它.这基本上根据需要删除第一个匹配行.

如果你想修改第一个匹配的行而不是删除它,你只需在f = 1旁边插入代码即可,例如:

pax$echo '

xyz

myline 1 is pretty

line 2 is ugly

myline 111 is nice' | awk '

/1 is/ {if (f) {print} else {f = 1;print "URK!!!"}}

!/1 is/ {print}'

xyz

URK!!!

line 2 is ugly

myline 111 is nice

要在awk中使用shell变量,可以使用-v选项将其作为真正的awk变量传递:

pax$export xyzvar=URK ; echo '

xyz

myline 1 is pretty

line 2 is ugly

myline 111 is nice' | awk -vmyvar=$xyzvar '

/1 is/ {if (f) {print} else {f = 1;print myvar}}

!/1 is/ {print}'

xyz

URK

line 2 is ugly

myline 111 is nice

标签:linux,sed,full-text-search

来源: https://codeday.me/bug/20190726/1542525.html

linux 删除行 脚本呢,Linux SED脚本找到匹配模式的第一行并删除它相关推荐

  1. sed删除匹配到的第一行记录

    cat uniq.txt | while read line; do sed -i "0,/KaTeX parse error: Expected '}', got 'EOF' at end ...

  2. linux shell之paste合并文件和找到匹配的文件里面替换内容(find和-exec或xargs组合)

    1 问题 1)合并2个文件,这里用paste命令 2)找到匹配的文件里面替换内容,这里用find 和 -exec或xargs命令组合 2 实现 1)合并2个文件,这里用paste命令,我们在paste ...

  3. linux编辑文本到最后一行,linux编辑文本(vim)时跳转到最后一行和第一行及相关指令...

    vi操作 1.跳到文本的最后一行:按"G",即"shift+g" 2.跳到最后一行的最后一个字符 : 先重复1的操作即按"G",之后按&qu ...

  4. php正则表达式如何找到匹配模式中的最后一组

    转载于:https://www.cnblogs.com/MyFlora/archive/2013/06/07/3124073.html

  5. Linux Shell常用技巧(三) sed

    Linux Shell常用技巧(三) sed 八.流编辑器sed 8.1 sed简介 sed是stream editor的缩写,一种流编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区 ...

  6. linux编写脚本读取txt文件,用bash脚本或者批处理 bat脚本 读取一个目录下.txt文件第一行内容存放到新文件a.txt...

    起因:我把cmd 控制台说成了dos! 发展:人类生气了,跟我扯了一堆 dos 还有什么玩意儿,在我第二次还说那个是dos界面以后:( 后续:人类要我写 批处理bat 还有linux bash 脚本去 ...

  7. linux脚本第一行是什么,完全搞懂shell脚本第一行:#!/bin/bash的含义

    转自:https://blog.csdn.net/Doris0214/article/details/91453113 shell脚本的第一行一般会写有以下字样: #!/bin/bash 或者 #!/ ...

  8. Linux高级文本处理之sed(三)

    sed高级命令 sed允许将多行内容读取到模式空间,这样你就可以匹配跨越多行的内容.本篇笔记主要介绍这些命令,它们能够创建多行模式空间并且处理之.其中,N/D/P这三个多行命令分别对应于小写的n/d/ ...

  9. LINUX SHELL的神器,sed

    我们知道,Vim 采用的是交互式文本编辑模式,你可以用键盘命令来交互性地插入.删除或替换数据中的文本.但本节要讲的 sed 命令不同,它采用的是流编辑模式,最明显的特点是,在 sed 处理数据之前,需 ...

最新文章

  1. sqlconnection,sqlcommand,SqlDataAdapter ,ExecuteNonQuery,ExecuteScalar
  2. load generator 与ip Spoofer的区别
  3. jackson使用示例
  4. Quartz-Java Web项目中使用Quartz
  5. VS2010 断点无效肿么办?
  6. 一个自己写的有关数据库的treeview.
  7. Android Studio 2.1.2 升级到 2.2之后,gradle 编译版本更新为2.2.0,databinding报错
  8. Java学习小程序(9)冒泡排序算法实现
  9. CodePush 管理工具 App Center Cli 的常用命令行
  10. VS项目属性的一些配置项的总结(持续增加。。。)
  11. 端智能揭秘|促使双十一GMV大幅提升,手淘用了什么秘密武器?
  12. 百度地图个性化模板列表
  13. DB2 INTERSECT、EXCEPT、UNION集合操作测试
  14. smarty手册-smarty中foreach循环语句详解
  15. 属于自己的MES(二)必备的主数据
  16. 精英主义 遗传算法 matlab,遗传算法matlab程序
  17. 电脑桌面天气计算机备忘录,有什么桌面软件可以显示:时间,天气,还有备忘录的?...
  18. 看完这篇 Session、Cookie、Token,和面试官扯皮就没问题了
  19. 半车模型悬架系统的simulink仿真
  20. 公众号精选评论点赞_十大和编辑精选:六月评论

热门文章

  1. 【学习总结Day32】
  2. NFS共享使用方法详解。
  3. C 语言实例 - 计算一个数的 n 次方
  4. 解决wget下载文件名乱码的一些方法
  5. Good Player真给力,有网络硬盘的朋友有福了~~~~
  6. PHP处理上百万条的数据库如何提高处理查询速度
  7. 【Sonar】Sonar理论篇
  8. c语言从文件中读取坐标到数组,用C语言将文件内容读入数组
  9. Frobenius norm(弗罗贝尼乌斯范数)
  10. 80x86汇编:将AL中的8位无符号数转换为压缩型BCD数放入AX