免费注册 查看新帖 |

Chinaunix

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

[文本处理] sed问题求助 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-01-02 11:54 |只看该作者 |倒序浏览
conf.txt
内容如下
others=wenxianzhi,zhuyong,ellan,fate,wendy,xiaoaicao,roy,songhuan

我想在others行尾增加一个用户

我的代码
  1. #!/bin/bash
  2. username=$1
  3. enduser=`cat conf.txt|grep others |grep -v @ |awk -F','  '{print $NF}'`
  4. echo $username
  5. echo $enduser

  6. sed   "/$username/s/$/{uername}/g" conf.txt
复制代码
为什么不行呢?
请高手指教!谢谢!

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
2 [报告]
发表于 2014-01-02 12:01 |只看该作者
本帖最后由 这个冬天不冷 于 2014-01-02 12:01 编辑
  1. sed 's/.*/&,youruser/g' conf.txt
  2. thers=wenxianzhi,zhuyong,ellan,fate,wendy,xiaoaicao,roy,songhuan,youruser
  3. [root@everIover ~]#
复制代码
如果直接修改 可以加 -i 参数

论坛徽章:
9
2015亚冠之阿尔纳斯尔
日期:2015-09-10 16:21:162015亚冠之塔什干火车头
日期:2015-07-01 16:23:022015年亚洲杯之巴勒斯坦
日期:2015-04-20 17:19:46子鼠
日期:2014-11-13 09:51:26未羊
日期:2014-08-28 18:13:36技术图书徽章
日期:2014-02-21 09:30:15酉鸡
日期:2014-01-14 11:12:49天蝎座
日期:2013-12-09 17:56:53平安夜徽章
日期:2015-12-26 00:06:30
3 [报告]
发表于 2014-01-02 12:01 |只看该作者
回复 1# chinaboywg

-i 才会修改源文件


   

论坛徽章:
2
亥猪
日期:2013-12-24 16:24:04狮子座
日期:2014-01-03 14:56:30
4 [报告]
发表于 2014-01-02 13:30 |只看该作者
sed   "/$username/s/$/{uername}/g" conf.txt

你这个语句是更改已经添加了$username变量的confi.txt文件
但事实上,你的源文件根本没有任何变动。所以执行失败了。

sed "s/$enduser/&,$username/g" conf.txt

论坛徽章:
0
5 [报告]
发表于 2014-01-02 13:57 |只看该作者
我知道加-i才可以改变,但加了也没用 回复 3# HH106


   

论坛徽章:
0
6 [报告]
发表于 2014-01-02 14:06 |只看该作者
#!/bin/bash
txt=`grep other conf.txt`
echo  $txt","$1 > conf.txt

论坛徽章:
0
7 [报告]
发表于 2014-01-02 15:34 |只看该作者
文件中还有其他的行 回复 6# cong_rong520


   

论坛徽章:
0
8 [报告]
发表于 2014-01-02 17:30 |只看该作者
[root@zhangkai ~]# cat test.sh
#!/bin/bash
txt=`grep  "others" demo.txt|grep 'xianglei'`
linenumber=`awk '/xianglei/{print NR}'  demo.txt`
newtxt=$txt","$1
sed "${linenumber}s/.*/'$newtxt'/" ./demo.txt

论坛徽章:
0
9 [报告]
发表于 2014-01-02 17:30 |只看该作者
回复 7# chinaboywg

[root@zhangkai ~]# cat test.sh
#!/bin/bash
txt=`grep  "others" demo.txt|grep 'xianglei'`
linenumber=`awk '/xianglei/{print NR}'  demo.txt`
newtxt=$txt","$1
sed "${linenumber}s/.*/'$newtxt'/" ./demo.txt

   

论坛徽章:
1
未羊
日期:2014-01-02 10:31:18
10 [报告]
发表于 2014-01-02 19:38 |只看该作者
这个冬天不冷 发表于 2014-01-02 12:01
如果直接修改 可以加 -i 参数


酱紫?conf.txt中还有其他的文件行所以要筛选一下
  1. sed 's/^other.*/&,yourusername/g' conf.txt
复制代码
如果要修改原文件可以加 -i选项,假如没有-i选项的系统。。比如我的系统 ,那可以这样
  1. sed 's/^other.*/&,yourusername/g' conf.txt >conf.tmp && mv conf.tmp conf.txt
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP