免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2829 | 回复: 13
打印 上一主题 下一主题

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(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
请问应该怎么写?


论坛徽章:
30
申猴
日期:2014-04-10 09:43:532015年亚洲杯纪念徽章
日期: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:0915-16赛季CBA联赛之吉林
日期:2017-09-04 12:14:43
2 [报告]
发表于 2017-09-12 08:58 |只看该作者
回复 1# bartzhangsh


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

论坛徽章:
0
3 [报告]
发表于 2017-09-12 09:59 |只看该作者
你好,这样是在下面一行加入了。因为这个是配置文件
conf=xxxx,所以是想要在xxxxx后面直接加入
不如加入部分就读不到了。

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

论坛徽章:
30
申猴
日期:2014-04-10 09:43:532015年亚洲杯纪念徽章
日期: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:0915-16赛季CBA联赛之吉林
日期:2017-09-04 12:14:43
5 [报告]
发表于 2017-09-12 14:19 |只看该作者
回复 4# bartzhangsh


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

论坛徽章:
0
6 [报告]
发表于 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
7 [报告]
发表于 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 *;
这样

论坛徽章:
30
申猴
日期:2014-04-10 09:43:532015年亚洲杯纪念徽章
日期: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:0915-16赛季CBA联赛之吉林
日期:2017-09-04 12:14:43
8 [报告]
发表于 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
9 [报告]
发表于 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
10 [报告]
发表于 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版本
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP