免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 莫侠007
打印 上一主题 下一主题

[文本处理] 文本处理,awk or sed [复制链接]

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
11 [报告]
发表于 2014-11-18 09:10 |只看该作者
  1. sed -n '/B0099S05/!b;:1;N;s/\n|/|/;t1;P;D'
复制代码

论坛徽章:
4
狮子座
日期:2014-04-17 10:45:47双鱼座
日期:2014-08-21 17:16:41处女座
日期:2014-08-26 13:46:46水瓶座
日期:2014-10-28 14:08:50
12 [报告]
发表于 2014-11-18 11:17 |只看该作者
  1. root@ubuntu:/app/shell# sed -r '/B0099S05/{:1;N;s/\n\|\|//g;b1}'  i
  2. [2005/02/18 13:44:23 B0099S05] SELECT a, b, from dual;
  3. [2005/02/18 13:44:23 B0099S05] UPDATE MATERIAL T SET T.CDELDATE = '20050216'
  4. [2005/02/18 13:44:23 B0099S05] DELETE * from MATERIAL;
  5. aaaaaaaaaaa
  6. bbbbbbbbbb
  7. PL/SQL over!。
复制代码

论坛徽章:
6
羊年新春福章
日期:2015-03-03 17:16:28双子座
日期:2015-03-03 17:16:56巳蛇
日期:2015-03-03 17:17:2415-16赛季CBA联赛之福建
日期:2016-03-11 09:05:00黑曼巴
日期:2016-07-07 16:58:1215-16赛季CBA联赛之吉林
日期:2016-11-14 09:23:07
13 [报告]
发表于 2014-11-18 13:12 |只看该作者
本帖最后由 jcdiy0601 于 2014-11-18 13:12 编辑

回复 12# 圣西罗门柱


    能给我讲讲大括号里面的内容什么意思吗

论坛徽章:
4
狮子座
日期:2014-04-17 10:45:47双鱼座
日期:2014-08-21 17:16:41处女座
日期:2014-08-26 13:46:46水瓶座
日期:2014-10-28 14:08:50
14 [报告]
发表于 2014-11-18 14:41 |只看该作者
回复 13# jcdiy0601


    b label ,无条件跳转到标签label,如果label没有指定,跳转到命令的结尾
     
     http://bbs.chinaunix.net/forum.p ... mp;fromuid=26669282
     看看这个

论坛徽章:
0
15 [报告]
发表于 2014-11-18 14:52 |只看该作者
回复 10# chengchow

谢谢!sed的写法,可读性不容易懂。
注:这个写法 看得我好头疼啊,终于看明白了。
1h是把第一行当前模式空间中内容覆盖至保持空间,1!H是将当前模式空间中除了第一行的内容追加至保持空间,
$!d是除了最后一行,其他行都删除,g是将当前保持空间中内容覆盖至模式空间,s/\n\|\|//g就是替换了。
sed每读入一行,都进行'1h;1!H;$!d;${g;s/\n\|\|//g}'的操作,所以读入最后一行时,相当于把整个文件的内容当行一行来保存在保持空间中(其中包含多个\n),所
以$!d是必需的。
比如一文件:
a
b
c
d
此时保持空间的内容为:(共四行)
a
a\nb
a\nb\nc
a\nb\nc\nd
$!d;后就只剩下a\nb\nc\nd了。

   

论坛徽章:
24
申猴
日期:2014-10-10 15:56:39射手座
日期:2014-10-10 15:57:18黑曼巴
日期:2018-05-14 11:05:122016科比退役纪念章
日期:2018-05-14 11:05:0715-16赛季CBA联赛之北控
日期:2018-05-14 11:05:0015-16赛季CBA联赛之江苏
日期:2017-02-27 18:11:0715-16赛季CBA联赛之上海
日期:2018-08-15 09:48:5415-16赛季CBA联赛之佛山
日期:2018-07-20 17:14:2315-16赛季CBA联赛之佛山
日期:2019-09-10 18:08:4615-16赛季CBA联赛之山西
日期:2020-03-26 09:40:5115-16赛季CBA联赛之佛山
日期:2020-05-08 09:03:54
16 [报告]
发表于 2014-11-18 15:13 |只看该作者
回复 15# 莫侠007
good!
$!d也不是必须有
sed -rn '....' 添加个-n参数关闭自动模式空间打印功能也可以


   

论坛徽章:
0
17 [报告]
发表于 2014-11-18 15:58 |只看该作者
回复 16# chengchow
如果加了n,把保持空间的最后一行覆盖到模式空间时,也不会打印出模式空间的内容的吧。


   

论坛徽章:
24
申猴
日期:2014-10-10 15:56:39射手座
日期:2014-10-10 15:57:18黑曼巴
日期:2018-05-14 11:05:122016科比退役纪念章
日期:2018-05-14 11:05:0715-16赛季CBA联赛之北控
日期:2018-05-14 11:05:0015-16赛季CBA联赛之江苏
日期:2017-02-27 18:11:0715-16赛季CBA联赛之上海
日期:2018-08-15 09:48:5415-16赛季CBA联赛之佛山
日期:2018-07-20 17:14:2315-16赛季CBA联赛之佛山
日期:2019-09-10 18:08:4615-16赛季CBA联赛之山西
日期:2020-03-26 09:40:5115-16赛季CBA联赛之佛山
日期:2020-05-08 09:03:54
18 [报告]
发表于 2014-11-18 16:03 |只看该作者
回复 17# 莫侠007
可以+$p就可以了
写法多样,找自己习惯的


   

论坛徽章:
0
19 [报告]
发表于 2014-11-18 16:05 |只看该作者
回复 18# chengchow
是的,受教,学习了,通过这一贴对sed了解深了一些!


   

论坛徽章:
6
羊年新春福章
日期:2015-03-03 17:16:28双子座
日期:2015-03-03 17:16:56巳蛇
日期:2015-03-03 17:17:2415-16赛季CBA联赛之福建
日期:2016-03-11 09:05:00黑曼巴
日期:2016-07-07 16:58:1215-16赛季CBA联赛之吉林
日期:2016-11-14 09:23:07
20 [报告]
发表于 2014-11-18 17:40 |只看该作者
回复 14# 圣西罗门柱


    链接进不去
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP