免费注册 查看新帖 |

Chinaunix

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

关于两个文件合并之后列对齐的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-06-20 19:15 |只看该作者 |倒序浏览
有两个文件,test1,test2,这两个文件都有很多行记录,我把它们合在一起变成一个文件test,合成之后,每个列都对不齐了,我想把列对齐。又不想在vi中手动一个一个地对齐,因为太慢了,请问怎么解决这个问题?是用命令好,还是可以在vi中整体列对齐?请大家帮帮我。
简单地例子
test1:
fruit
1     apple      book       money
2     city          bus         cup

test2:
name
   3    paper       pen    hello
   4    hat           red     unix

test:
1     apple      book       money
2     city          bus         cup
   3    paper       pen       hello
   4    hat           red        unix

以上只是一个例子,实际有几千行,所以特别想有一个简单的方法列对齐。谢谢各位了!

论坛徽章:
0
2 [报告]
发表于 2007-06-20 19:30 |只看该作者
  1. awk '{for(i=1;i<=NF;i++)printf $i"\t";printf "\n"}' test
复制代码

论坛徽章:
0
3 [报告]
发表于 2007-06-20 19:32 |只看该作者
谢谢楼上,我这就试一试

论坛徽章:
0
4 [报告]
发表于 2007-06-20 19:45 |只看该作者
1楼的方法我试了。好像不行

论坛徽章:
0
5 [报告]
发表于 2007-06-20 20:21 |只看该作者
根倨你的樣本測試,在我的機器是這樣的,成嗎?

[victor@localhost ~]$ cat file1
fruit
1     apple      book       money
2     city          bus         cup

[victor@localhost ~]$ cat file2
name
   3    paper       pen    hello
   4    hat           red     unix
[victor@localhost ~]$ join -a 1 file1 -a 2 file2 | sed 's/^[^0-9][^0-9]*..*//g;/^$/d;s/[ \t][ \t]*/\t/g'
1       apple   book    money
2       city    bus     cup
3       paper   pen     hello
4       hat     red     unix
[victor@localhost ~]$

[ 本帖最后由 twf_cc 于 2007-6-20 20:26 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2007-06-20 20:49 |只看该作者
看錯了,哈哈,這樣
[victor@localhost ~]$ cat file3
1     apple      book       money
2     city          bus         cup
   3    paper       pen       hello
   4    hat           red        unix

[victor@localhost ~]$ sed 's/^[ \t][ \t]*//g;s/[ \t][ \t]*/\t/g' file3
1       apple   book    money
2       city    bus     cup
3       paper   pen     hello
4       hat     red     unix

[victor@localhost ~]$

论坛徽章:
0
7 [报告]
发表于 2007-06-20 22:44 |只看该作者
column -t
试试

论坛徽章:
0
8 [报告]
发表于 2007-06-21 09:47 |只看该作者
试下这个。
awk '{printf("%-15s %-15s %-15s %-15s\n", $1, $2, $3, $4)}' test1 test2
我运行后的结果是这样子的
[root@js ~]# cat test1 test2
1     apple      book       money
2     city          bus         cup

3    paper       pen    hello
   4    hat           red     unix
[root@js ~]# awk '{printf("%-15s %-15s %-15s %-15s\n", $1, $2, $3, $4)}' test1 test2
1               apple           book            money         
2               city               bus              cup            
                                                               
3               paper           pen             hello         
4               hat               red              unix  
[root@js ~]#

论坛徽章:
0
9 [报告]
发表于 2007-06-21 09:49 |只看该作者
弱问一下twf_cc,
sed 's/^[ \t][ \t]*//g;s/[ \t][ \t]*/\t/g' file3
这个命令中的/\是如何从键盘输入的?

论坛徽章:
0
10 [报告]
发表于 2007-06-21 09:58 |只看该作者
/\ = / \
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP