linux 删除行 脚本呢,Linux SED脚本找到匹配模式的第一行并删除它
我想创建一个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脚本找到匹配模式的第一行并删除它相关推荐
- sed删除匹配到的第一行记录
cat uniq.txt | while read line; do sed -i "0,/KaTeX parse error: Expected '}', got 'EOF' at end ...
- linux shell之paste合并文件和找到匹配的文件里面替换内容(find和-exec或xargs组合)
1 问题 1)合并2个文件,这里用paste命令 2)找到匹配的文件里面替换内容,这里用find 和 -exec或xargs命令组合 2 实现 1)合并2个文件,这里用paste命令,我们在paste ...
- linux编辑文本到最后一行,linux编辑文本(vim)时跳转到最后一行和第一行及相关指令...
vi操作 1.跳到文本的最后一行:按"G",即"shift+g" 2.跳到最后一行的最后一个字符 : 先重复1的操作即按"G",之后按&qu ...
- php正则表达式如何找到匹配模式中的最后一组
转载于:https://www.cnblogs.com/MyFlora/archive/2013/06/07/3124073.html
- Linux Shell常用技巧(三) sed
Linux Shell常用技巧(三) sed 八.流编辑器sed 8.1 sed简介 sed是stream editor的缩写,一种流编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区 ...
- linux编写脚本读取txt文件,用bash脚本或者批处理 bat脚本 读取一个目录下.txt文件第一行内容存放到新文件a.txt...
起因:我把cmd 控制台说成了dos! 发展:人类生气了,跟我扯了一堆 dos 还有什么玩意儿,在我第二次还说那个是dos界面以后:( 后续:人类要我写 批处理bat 还有linux bash 脚本去 ...
- linux脚本第一行是什么,完全搞懂shell脚本第一行:#!/bin/bash的含义
转自:https://blog.csdn.net/Doris0214/article/details/91453113 shell脚本的第一行一般会写有以下字样: #!/bin/bash 或者 #!/ ...
- Linux高级文本处理之sed(三)
sed高级命令 sed允许将多行内容读取到模式空间,这样你就可以匹配跨越多行的内容.本篇笔记主要介绍这些命令,它们能够创建多行模式空间并且处理之.其中,N/D/P这三个多行命令分别对应于小写的n/d/ ...
- LINUX SHELL的神器,sed
我们知道,Vim 采用的是交互式文本编辑模式,你可以用键盘命令来交互性地插入.删除或替换数据中的文本.但本节要讲的 sed 命令不同,它采用的是流编辑模式,最明显的特点是,在 sed 处理数据之前,需 ...
最新文章
- sqlconnection,sqlcommand,SqlDataAdapter ,ExecuteNonQuery,ExecuteScalar
- load generator 与ip Spoofer的区别
- jackson使用示例
- Quartz-Java Web项目中使用Quartz
- VS2010 断点无效肿么办?
- 一个自己写的有关数据库的treeview.
- Android Studio 2.1.2 升级到 2.2之后,gradle 编译版本更新为2.2.0,databinding报错
- Java学习小程序(9)冒泡排序算法实现
- CodePush 管理工具 App Center Cli 的常用命令行
- VS项目属性的一些配置项的总结(持续增加。。。)
- 端智能揭秘|促使双十一GMV大幅提升,手淘用了什么秘密武器?
- 百度地图个性化模板列表
- DB2 INTERSECT、EXCEPT、UNION集合操作测试
- smarty手册-smarty中foreach循环语句详解
- 属于自己的MES(二)必备的主数据
- 精英主义 遗传算法 matlab,遗传算法matlab程序
- 电脑桌面天气计算机备忘录,有什么桌面软件可以显示:时间,天气,还有备忘录的?...
- 看完这篇 Session、Cookie、Token,和面试官扯皮就没问题了
- 半车模型悬架系统的simulink仿真
- 公众号精选评论点赞_十大和编辑精选:六月评论