免费注册 查看新帖 |

Chinaunix

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

请问有关文本行替换 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-12-19 09:41 |只看该作者 |倒序浏览
文件a.txt内容如下:

ajfdksjf;fds
abc 111
abc 123
jfsdfkfjdffjs

请问如何将“abc 111”中的111换成222?而其他行内容不变。
谢谢了!

论坛徽章:
0
2 [报告]
发表于 2006-12-19 09:57 |只看该作者
sed "s/abc\ 111/abc\ 222/" filename

论坛徽章:
0
3 [报告]
发表于 2006-12-19 11:07 |只看该作者
谢谢!
还有个问题:如果我想替换文本中出现的第一个“abc xxx”为“abc 222”,其中xxx为不确定的值。
请问该怎么办?

论坛徽章:
0
4 [报告]
发表于 2006-12-19 11:47 |只看该作者
sed -n 's/abc.*/abc 222/1' a.txt
可以让仅替换第一次匹配的地方,但是这句话不知道为什么不能用,全替换了。。。
望高人解答。

论坛徽章:
0
5 [报告]
发表于 2006-12-19 11:51 |只看该作者
一行的第一次

try this:
  1. awk 'bool == 0 {if (sub(/a.*/, abc 222, $0)) bool = 1;}{print}'
复制代码


刚才粘贴少了...

[ 本帖最后由 Edengundam 于 2006-12-19 12:43 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2006-12-19 12:31 |只看该作者
原帖由 Edengundam 于 2006-12-19 11:51 发表
一行的第一次

try this:
  1. awk 'bool == 0 {if (sub(/a.*/, abc 222, $0)) bool = 1;}
复制代码


这样的话是不是文件有多少行就要至少判断多少次bool==1 了?

论坛徽章:
0
7 [报告]
发表于 2006-12-19 12:46 |只看该作者
原帖由 月波无漾 于 2006-12-19 12:31 发表


这样的话是不是文件有多少行就要至少判断多少次bool==1 了?



刚才贴少了, 这种判断的代价很小的. 不要在乎这种开销 需要考虑效率的时候再考虑效率.

论坛徽章:
0
8 [报告]
发表于 2006-12-20 09:42 |只看该作者
你们执行可以吗?我运行时会将abc 111替换成222,而我想保留abc,请问是哪出了问题?
我刚用shell,请大家多指教!谢谢!

论坛徽章:
0
9 [报告]
发表于 2006-12-20 10:06 |只看该作者
原帖由 abel_lcp 于 2006-12-20 09:42 发表
你们执行可以吗?我运行时会将abc 111替换成222,而我想保留abc,请问是哪出了问题?
我刚用shell,请大家多指教!谢谢!


sorry, i made a mistake, try this:


  1. awk 'bool == 0 {if (sub(/abc.*/, "abc 222", $0)) bool = 1;}{print}'
复制代码

论坛徽章:
0
10 [报告]
发表于 2006-12-20 11:01 |只看该作者
谢谢!
我还想问一下:我想替换的“abc 222”能不能用$xx表示,而我在其他地方定义xx="abc 222"?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP