免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: net_lin
打印 上一主题 下一主题

请教文本替换的问题,谢谢! [复制链接]

论坛徽章:
0
21 [报告]
发表于 2009-03-08 20:28 |只看该作者
原帖由 wtuter 于 2009-3-7 23:02 发表
awk -F'='  '{gsub(/ */,"",$1)print $1"="$2}'  ufile


没有测试,不行的话在  print前加个分号

awk -F'='  '{gsub(/ */,"",$1);print $1"="$2}'  ufile
少加了一个分号,帮你测试了,是可以的。

论坛徽章:
0
22 [报告]
发表于 2009-03-08 20:41 |只看该作者
原帖由 blackold 于 2009-3-7 17:48 发表
try:sed 'h;s/=.*//;s/ //g;G;s/\n.*=/=/' urfile

黑哥的这个比较高深。

论坛徽章:
0
23 [报告]
发表于 2009-03-08 22:09 |只看该作者
有那位大哥可以讲一下sed里-r是什么意思?

论坛徽章:
0
24 [报告]
发表于 2009-03-08 22:11 |只看该作者

回复 #23 树上开花 的帖子

正则扩展
  -r, --regexp-extended
                 use extended regular expressions in the script.

论坛徽章:
0
25 [报告]
发表于 2009-03-09 18:19 |只看该作者
感谢大家的帮助,最好的答案是黑哥的方法,不过不大理解,正在学习中,能否解释一下,谢谢!
sed 'h;s/=.*//;s/ //g;G;s/\n.*=/=/' urfile

论坛徽章:
0
26 [报告]
发表于 2009-03-09 19:09 |只看该作者
sed 'h;s/=.*//;s/ //g;G;s/\n.*=/=/' urfile
一步一步就好理解了
h : 把pattern space(理解成当前行吧)的放个备份进hold space(理解成暂存空间吧);
s/=.*// :pattern space把等于及其后的部分去掉;
s/ //g :把全部空格去掉;
G :把刚才放在hold space里的备份拿出来,放在刚才处理了的字符的下一行
s/\n.*=/=/ :把换行符及下一行等号之间的字符给删了

论坛徽章:
0
27 [报告]
发表于 2009-03-09 20:02 |只看该作者
原帖由 cjaizss 于 2009-3-8 20:16 发表

sed -rn ':a s/[ \t]+(.*=)/\1/;ta;p'

这个不是更好么?字符都打的少

论坛徽章:
0
28 [报告]
发表于 2009-03-09 20:16 |只看该作者
sed -r 's/([a-z])\s*/\1/g'
这个字符不是更少?

论坛徽章:
0
29 [报告]
发表于 2009-03-09 20:29 |只看该作者

回复 #28 oldoger 的帖子

试试"aa  bb   11  =d"

sed -rn ':a s/[ \t]+(.*=)/\1/;ta;p' 效率应该弱点

论坛徽章:
0
30 [报告]
发表于 2009-03-09 20:29 |只看该作者
原帖由 rhlei 于 2009-3-7 16:51 发表
[root@localhost qes]# sed -r 's/(\w*)\s*=/\1=/g' data
First timestamp= 2009-03-05 15:45:59062189
Last reset timestamp= 2009-03-07 16:19:50780360

不知道是不是你要的结果。


学习了。谢谢,想不到sed可以如此支持正则表达式。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP