sed删除匹配行的上一行和下一行
1.删除匹配行的上一行和下一行:
sed -i -e '/string/{n;d}' -e '$!N;/\n.*string/!P;D' file
2.sed中使用变量,删除匹配行的上一行和下一行:
AA=string #变量指定匹配字符串
sed -i -e '/'"$AA"'$/{n;d}' -e '$!N;/\n.*'"$AA"'$/!P;D' file
例子:
INSERT INTO bonusreturnorder VALUES ('47', '224', '1300573', '2', '1', 'WX20160203083601539373', 'HBTK20160204020000110119', '2016-02-04 02:00:01', '2016-02-04 02:00:00', '1200.00', '超时未领完');
INSERT INTO bonusreturnorder VALUES ('50', '254', '697', '2', '1', 'WX20160203085132174280', 'HBTK20160204020001045349', '2016-02-04 02:00:02', '2016-02-04 02:00:01', '600.00', '超时未领完');
--BONUSID number(11) ,DELETEFLAG number(2) ,TYPE number(2) ,
); CREATE TABLE bonususer (
--SENDUSERID number(11) ,SENDUSERNAME varchar2(32) ,BONUSTICKETNO varchar2(32) ,
); INSERT INTO bonususer VALUES ('332', '155', '100.00', '85705', '3', '2016-02-03 07:12:27', '2016-02-03 07:13:11', null, '1', '1322', null, 'HB201602030712277209291');
INSERT INTO bonususer VALUES ('335', '155', '100.00', '1322', '3', '2016-02-03 07:12:27', '2016-02-03 07:12:38', null, '1', '1322', null, 'HB201602030712277209292');
--receiveUserId number(11) NOT NULL,deleteFlag number(1) NOT NULL ,createTime date ,
); INSERT INTO rb_bonustouser VALUES ('97154', '8515718', '239473', '1', '2017-01-11 19:28:16');
INSERT INTO rb_bonustouser VALUES ('97156', '8515718', '11326', '1', '2017-01-11 19:28:16');
要求:
使用sed删除以)开头的行的上一行末尾的逗号
苦恼了我两个晚上也没搞定,期间也参考了网上一些大神的博客和GNU官网sed命令的详解。最终选择在CSDN上发帖求助文本处理大神,迎刃而解。在此感谢大牛 “代码誉写工”。
[pc@S5 ~]$ sed '/,\s*$/{:loop; N; /,\(\s*\|\n\))/! bloop; s/,\s*[\n]\?\s*)/\n)/}' file
20000110119', '2016-02-04 02:00:01', '2016-02-04 02:00:00', '1200.00', '超时未领完');
INSERT INTO bonusreturnorder VALUES ('50', '254', '697', '2', '1', 'WX20160203085132174280', 'HBTK20160204020001045349', '2016-02-04 02:00:02', '2016-02-04 02:00:01', '600.00', '超时未领完');
--BONUSID number(11) ,DELETEFLAG number(2) ,TYPE number(2)
); CREATE TABLE bonususer (
--SENDUSERID number(11) ,SENDUSERNAME varchar2(32) ,BONUSTICKETNO varchar2(32)
); INSERT INTO bonususer VALUES ('332', '155', '100.00', '85705', '3', '2016-02-03 07:12:27', '2016-02-03 07:13:11', null, '1', '1322', null, 'HB201602030712277209291');
INSERT INTO bonususer VALUES ('335', '155', '100.00', '1322', '3', '2016-02-03 07:12:27', '2016-02-03 07:12:38', null, '1', '1322', null, 'HB201602030712277209292');
--receiveUserId number(11) NOT NULL,deleteFlag number(1) NOT NULL ,createTime date
); INSERT INTO rb_bon
解释:
\s匹配空格、制表符、换行、回车,也就是\s其实也匹配\n(多行模式的每行结尾)
\s*就是有0到n个空格或\n
/,/{}只要找到“,”就执行{}里的语句
:loop就是个标识,bloop 就是跳转到:loop
N是把下一行加入模式空间
/.\s*)/! bloop是如果模式空间发现了“, )”(这个“,”和“)”之间也许有n多个空格和回车,但没有其它字符),就不再执行:loop,也就是不N,而是执行bloop后的语句
s/,\s*)/\n)/ 就是去掉“,”号
sed删除匹配行的上一行和下一行相关推荐
- 使用sed删除匹配行的上一行和下一行
1.删除匹配行的上一行和下一行: sed -i -e '/string/{n;d}' -e '$!N;/\n.*string/!P;D' file 2.sed中使用变量,删除匹配行的上一行和下一行: ...
- R语言使用Hmisc包的impute函数填充dataframe数据中特定数据列中的缺失值、将空值null用上一行和下一行值的平均值填充
R语言使用Hmisc包的impute函数填充dataframe数据中特定数据列中的缺失值.将空值null用上一行和下一行值的平均值填充 目录
- sed删除指定行的上一行
有这么一个需求,需要从若干个apache虚机配置文件中删除一段内容,类似下面这种 <VirtualHost *> ServerName abc.com DocumentRoot /home ...
- sed 删除匹配行的前后行
2019独角兽企业重金招聘Python工程师标准>>> 删除匹配行的前后行 删除匹配行的下一行 sed -ne 'p;/niyaopipeideneirong/n' nidewenj ...
- sed常见用法,删除匹配行的上2行,下3行
删除匹配的下一行到最后一行 [root@test200 ~]# cat test a b c d e f [root@test200 ~]# sed '/c/{p;:a;N;$!ba;d}' test ...
- sed 删除匹配行的指定字符串
这里以nginx配置文件为例,修改日志格式. log_format main '$remote_addr - $remote_user [$time_local] "$request&quo ...
- Sed 删除匹配行,匹配的字符用Shell变量替换,且变量里含有斜杠“/”时,无法删除 解决办法
原文链接: https://zhidao.baidu.com/question/2138070399877009148.html 修改语法,用#代替",这个只能用在sed的s替换命令中,如: ...
- LINUX使用sed删除匹配行
具体来说: TEXT=ts-office.desktop FILE=mimeapps.list sed -i "/${TEXT}/"d ${FILE} 当然,两个变量也可以直接写进 ...
- linux bash shell sed 删除匹配行
[yeqiang@harbor tmp]$ cat a.txt aaa bbb ccc [yeqiang@harbor tmp]$ sed -i '/aaa/d' a.txt [yeqiang@har ...
最新文章
- python入门练习题-python入门练习题2
- RestTemplate--解决中文乱码
- springboot创建项目(通过spring官网)详细
- Nmap个人实战总结
- 考研数学自整理,弥补知识漏洞(强化、冲刺)
- 学会这些 Python 美图技巧,就等着女朋友夸你吧!| 原力计划
- linux学习笔记:磁盘挂载与卸载命令
- 谁爱谁都没有错... ...
- 基于共享内存和多重哈希实现分布式缓存系统
- Java实现两个文件夹之间的同步(改进版)
- 电子元件-555时基芯片
- 计算机系统备份教案,系统备份教案推荐.doc
- win10系统ltsc和服务器版哪个好,win10哪个版本最稳定流畅
- 车牌识别算法介绍与实践
- 开关电源(DC/DC)原理分析
- c++ 控制台游戏打砖块
- D语言使用dub编译ms-coff文件
- luogu1378 油滴扩展 (深搜)
- 21_RS485简单讲解
- 营收净利双双超市场预期,微盟财报给我们带来哪些启示?
热门文章
- android平台上持久化存储3种手段_Android 数据持久化==存储数据的五种方法
- Open3d学习计划——4(网格)
- python的字体如何调整
- Unity——场景远处迷雾效果
- IT博客兴衰史:致那些牛逼闪闪的日子
- 模仿学习--技术综述
- matlab解决svmtrain转化为fitcsvm函数的过程
- 如何清服务器redis缓存信息,redis desktop manager怎么清空缓存?redis desktop manager清空Redis缓存的方法...
- Netapp 磁盘、盘柜、控制器固件升级总结
- raid1 raid2 raid5 raid6 raid10的优缺点