一个在shell中将一列数据插入已经存在的一个文件的问题

无闻
一个在shell中将一列数据插入已经存在的一个文件的问题

我想将一列数据或者是激烈数据插入一个已经存在的文件中,并且成为原来的文件的最后一列或者是最后几列,例如有文件内容是
1   2
1   2
1   2
现在有一列数据
3
3
3
希望结果是
1   2   3
1   2   3
1   2   3
请指点一下如果是用shell如何解决,如果是前面所说的两组数据都存在文件之中,在VI环境中有办法直接将一个文件的内容读入到另外一个文件中,并且放在最后一列么?还有就是VI中可以读入指定文件的指定的列或者是行么?

blackold
try:
[code] paste file1 file2[/code]

无闻
谢谢指点,还想问一下,这个问题在vi环境中有办法解决么?特别是希望把一个文件中的指定的列或者是行读入到另外一个文件中的办法,还请指点一下。另外又想起来一个问题,前面的问题如果是希望结果是1 3 2这样的顺序,paste应该就不行了吧,这个时候该怎么解决呢?

[[i] 本帖最后由 无闻 于 2008-7-1 13:03 编辑 [/i]]

blackold
回复 #3 无闻 的帖子

在vi中应该没有快速的方法解决你的问题,当然肯定有方法可以办得到。

对于 1 3 2问题,paste不能完成,paste不是专门为这个问题而设计的。你可以组合其它工具来完成。

[[i] 本帖最后由 blackold 于 2008-7-1 13:06 编辑 [/i]]

walkerxk
在vi输入
:%!paste a b
[img]http://bbs.chinaunix.net/images/smilies/icon_mrgreen.gif[/img]
换汤不换药

walkerxk
先变成
1       2       3
1       2       3
1       2       3
然后
:g/.*/s//(./)/t/(./)/t/(./)//1/t/3/t/2/g

无闻
多谢各位的帮助

ruifox
[quote]原帖由 [i]walkerxk[/i] 于 2008-7-1 13:12 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8710418&ptid=1185554][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
先变成
1       2       3
1       2       3
1       2       3
然后
:g/.*/s//(./)/t/(./)/t/(./)//1/t/3/t/2/g [/quote]

太麻烦了吧,这可不是sed的长项

paste a b|awk '{print $1,$3,$2}'

yhongy
回复 #3 无闻 的帖子

awk '{print $1,$3,$2}' file

walkerxk
[quote]原帖由 [i]ruifox[/i] 于 2008-7-1 14:47 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8711376&ptid=1185554][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]


太麻烦了吧,这可不是sed的长项

paste a b|awk '{print $1,$3,$2}' [/quote]
我用的是ed,不是sed。人家要在vi里面用,vi里面调用ed比awk简单。