忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT HPC论坛 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
12下一页
最近访问板块 发新帖
查看: 1178 | 回复: 13

[文本处理] 在conf=abcd的后面加入字符串 [复制链接]

论坛徽章:
0
发表于 2017-09-11 23:34 |显示全部楼层
一个文本文件,有很多行.其中一行是 conf=abcd;这样的格式.
我想在abcd;后面不换行加入 cde=a,b,c;cef=e,f.g;这样.
想用sed命令,找出conf=开头的一行,在再后面加入上面的字符串.
但是不成功
sed '/\<conf=/$cde=a,b,c;cef=e,f.g;' conf.cfg
请问应该怎么写?


论坛徽章:
28
酉鸡
日期:2014-05-04 10:03:482015年迎新春徽章
日期:2015-03-04 09:58:112015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:09
发表于 2017-09-12 08:58 |显示全部楼层
回复 1# bartzhangsh


  1. sed  '/^conf=/{s/$/cde=a,b,c;cef=e,f.g;/}' file
复制代码

论坛徽章:
0
发表于 2017-09-12 09:59 |显示全部楼层
你好,这样是在下面一行加入了。因为这个是配置文件
conf=xxxx,所以是想要在xxxxx后面直接加入
不如加入部分就读不到了。

论坛徽章:
0
发表于 2017-09-12 14:08 |显示全部楼层
你好,其实我是在AIX环境中操作的。用的是 sed '/^conf/c conf=abc|efg|*a,b,*,? 1 3;' conf.cf
但是aix老是报 cannot be pased.
所以想用另外的方法实现

论坛徽章:
28
酉鸡
日期:2014-05-04 10:03:482015年迎新春徽章
日期:2015-03-04 09:58:112015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:09
发表于 2017-09-12 14:19 |显示全部楼层
回复 4# bartzhangsh


到底要干啥说清楚啊!示例数据和想要的结果全都贴出来!

论坛徽章:
0
发表于 2017-09-12 14:29 |显示全部楼层
回复 5# zxy877298415

原来的配置文件中一行是 conf=a|b|1 2 * 4,5;需要后面加入一些新的配置 c|d|1 2,3 * ?;e|f| 3 4 *;
结果成为
conf=a|b|1 2 * 4,5;c|d|1 2,3 * ?;e|f| 3 4 *;
这样

论坛徽章:
0
发表于 2017-09-12 14:29 |显示全部楼层
回复 5# zxy877298415

原来的配置文件中一行是 conf=a|b|1 2 * 4,5;需要后面加入一些新的配置 c|d|1 2,3 * ?;e|f| 3 4 *;
结果成为
conf=a|b|1 2 * 4,5;c|d|1 2,3 * ?;e|f| 3 4 *;
这样

论坛徽章:
28
酉鸡
日期:2014-05-04 10:03:482015年迎新春徽章
日期:2015-03-04 09:58:112015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:09
发表于 2017-09-12 15:00 |显示全部楼层
回复 7# bartzhangsh


echo 'conf=a|b|1 2 * 4,5;' | sed '/^conf/s/$/c|d|1 2,3 * ?;e|f| 3 4 *;/'

在aix 6.1下测试没有问题

论坛徽章:
0
发表于 2017-09-12 15:12 |显示全部楼层
回复 8# zxy877298415

你好,你写的确实是没问题.但是因为后面加入的东西要和conf=是在一行,不然程序读不到的.所以我写的是这样的
echo 'conf=a|b|1 2 * 4,5;' | sed '/^conf/c c|d|1 2,3 * ?;e|f| 3 4 *;/'
就会报cannot be parsed.
我的AIX是7.1版本的.

论坛徽章:
0
发表于 2017-09-12 15:13 |显示全部楼层
回复 8# zxy877298415

你好,你这样确实是可以的但是我实际需要是加入的字符串要在conf=xxx的后面,不能换行.
所以我是这样写的
echo 'conf=a|b|1 2 * 4,5;' | sed '/^conf/c c|d|1 2,3 * ?;e|f| 3 4 *;/'
就会报cdannot be parsed 的错误
我的AIX 7.1版本
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10张SACC2017门票等你来拿~

在数字化转型时代,云已成为万物智能的数字化大脑。而随着大数据应用、人工智能、移动互联网等技术的飞速发展,“智慧 +” 的概念正在深入到各行各业,提升企业效率,释放商业潜能,创造全新机遇。作为国内顶级技术盛会之一,2017 中国系统架构师大会(SACC2017)将于 10 月 19-21 日在北京新云南皇冠假日酒店震撼来袭。今年,大会以 “云智未来” 为主题,云集国内外顶级专家,围绕云计算、人工智能、大数据、移动互联网、产业应用等热点领域展开技术探讨与交流。本届大会共设置 2 大主会场,18 个技术专场;邀请来自互联网、金融、制造业、电商等多个领域,100 余位技术专家及行业领袖来分享他们的经验;并将吸引 4000 + 人次的系统运维、架构师及 IT 决策人士参会,为他们提供最具价值的交流平台。
----------------------------------------
优惠时间:2017年10月19日前

活动链接>>
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP