LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 913|回复: 4

[已解决]一道替换字符的题请求帮助

[复制链接]
发表于 2008-6-25 11:20:15 | 显示全部楼层 |阅读模式
题目是这样的:
一个文件,大概如下:

     标题

数据a  数据b
数据a   数据b
数据a           数据b
数据a  数据b
......    ......

(数据a与数据b之间有不规则的空格数目)

要求:使用命令把“数据b”挪到数据a的前面,并且在数据b的后面加上=符号。要求格式:

数据b=数据a
数据b=数据a
数据b=数据a
(不允许出现空格)


请各位大大帮帮忙,实在是难倒了我这个小菜鸟了
发表于 2008-6-25 12:54:34 | 显示全部楼层
s/\([^ ][^ ]*\)[ ][ ]*\([^ ][^ ]*\)/\2=\1/
回复 支持 反对

使用道具 举报

发表于 2008-6-25 15:18:00 | 显示全部楼层
楼上第三行会出错,因为第三行中既有全角空格又有半角空格。
可以用下面的方法解决:

perl -p -e 's/(\S+)[\s ]+(\S+)/$2=$1/xms' tt.txt

注意,[\s ] 中是一个全角的空格。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-25 20:46:49 | 显示全部楼层
谢谢whitelilis,你给出的解决方法在很多情况下都还能正常工作。谢谢
回复 支持 反对

使用道具 举报

发表于 2008-7-2 17:47:21 | 显示全部楼层
awk '{print $2"="$1}' tmp.txt
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表