免费注册 查看新帖 |

Chinaunix

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

[文本处理] 如何把指定内容添加到文件中指定的一行 [复制链接]

论坛徽章:
2
程序设计版块每日发帖之星
日期:2016-02-28 06:20:00IT运维版块每日发帖之星
日期:2016-03-31 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-03-04 11:00 |只看该作者 |倒序浏览
比如文件name.txt中的内容如下:
[global]
keyring = /Ceph/Meta/Keyring/$name.keyring
auth supported = none
auth cluster required = none

我想把 auth = none添加到[global]下面一行,而不影响别的行,变为:
[global]
auth = none
keyring = /Ceph/Meta/Keyring/$name.keyring
auth supported = none
auth cluster required = none
这个脚本名字为add,如何通过命令./add  auth = none 办到呢?
另外如何删除这个文件里的指定行?比如删除auth supported = none这一行。谢谢大家了

论坛徽章:
3
程序设计版块每日发帖之星
日期:2016-02-23 06:20:0015-16赛季CBA联赛之八一
日期:2017-10-26 17:58:2515-16赛季CBA联赛之北控
日期:2017-11-02 10:50:56
2 [报告]
发表于 2016-03-04 11:21 |只看该作者
sed -i "/global/a$1" name.txt
sed -i "/auth\ supported\ =\ none/d" name.txt

./add.sh "auth = none"

论坛徽章:
2
程序设计版块每日发帖之星
日期:2016-02-28 06:20:00IT运维版块每日发帖之星
日期:2016-03-31 06:20:00
3 [报告]
发表于 2016-03-04 11:26 |只看该作者
回复 2# 过过招


    非常感谢,可以添加了,请问删除如何弄成类似./delete "xxxxx" 这样的呢?

论坛徽章:
6
摩羯座
日期:2013-08-24 10:43:10狮子座
日期:2013-08-25 10:27:06天秤座
日期:2013-09-11 20:28:44午马
日期:2014-09-28 16:06:0015-16赛季CBA联赛之八一
日期:2016-12-19 13:55:0515-16赛季CBA联赛之天津
日期:2016-12-20 14:01:23
4 [报告]
发表于 2016-03-04 11:31 |只看该作者
  1. $ cat add
  2. #!/bin/bash
  3. sed -i "/\[global\]/N;s/\n/\n$1\n/" name.txt
  4. $ ./add  "auth = none"
复制代码

论坛徽章:
3
程序设计版块每日发帖之星
日期:2016-02-23 06:20:0015-16赛季CBA联赛之八一
日期:2017-10-26 17:58:2515-16赛季CBA联赛之北控
日期:2017-11-02 10:50:56
5 [报告]
发表于 2016-03-04 11:32 |只看该作者
sed -i "/$1/d" name.txt

./delete.sh "auth supported = none"

论坛徽章:
2
luobin
日期:2016-06-17 17:46:36lufei
日期:2016-06-17 17:49:16
6 [报告]
发表于 2016-03-04 12:48 |只看该作者
sed '/[golobal]/a  auth = none' filename

论坛徽章:
2
luobin
日期:2016-06-17 17:46:36lufei
日期:2016-06-17 17:49:16
7 [报告]
发表于 2016-03-04 12:49 |只看该作者
sed '/auth supported = none/d' filename

论坛徽章:
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
8 [报告]
发表于 2016-03-04 13:09 |只看该作者
sed -e '/\[global\]/a\auth = none' -e '/auth supported = none/d' file
[global]
auth = none
keyring = /Ceph/Meta/Keyring/$name.keyring
auth cluster required = none


论坛徽章:
2
程序设计版块每日发帖之星
日期:2016-02-28 06:20:00IT运维版块每日发帖之星
日期:2016-03-31 06:20:00
9 [报告]
发表于 2016-03-04 14:10 |只看该作者
回复 5# 过过招


    谢谢 ;假如shell中有一个这个语句:
for((i=1;i<=$5;i++));
do{
./tceph_rand  -ra -d $1 -b $2 -D $3 -t $4 | tail -3 | head -1 > /home/code/perforTest/totalTime1
我想随着i的自己增加,让totalTime1里面的1也自己增加,变成totalTime2.。。该怎么写/home/code/perforTest/totalTime1这句啊?直接把i放到totalTime后面不行啊

论坛徽章:
3
程序设计版块每日发帖之星
日期:2016-02-23 06:20:0015-16赛季CBA联赛之八一
日期:2017-10-26 17:58:2515-16赛季CBA联赛之北控
日期:2017-11-02 10:50:56
10 [报告]
发表于 2016-03-04 14:18 |只看该作者
查查eval的用法,正对症!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP