最近在其他论坛上看到几个网友的面试题,这些天,QQ群内的人都在讨论怎么解答才最简单,下面列出题目:
文件a: 文件b:
a b c a b c
b c a b c a
c b a c a b
a a a 1 1 1
b b b 2 2 2
c c c 3 3 3
要求合并2个文件如下:
a b c a b c
b c a b c a
c a b c a b
a a a 1 1 1
b b b 2 2 2
c c c 3 3 3
最简单的答案看下面:
- [root@Virtual ~]# paste -d ' ' a b
- a b c a b c
- b c a b c a
- c b a c a b
- a a a 1 1 1
- b b b 2 2 2
- c c c 3 3 3
awk大牛给的答案:
- [root@Virtual ~]# awk 'NR==FNR{a[NR]=$0}NR>FNR{print a[FNR],$0}' a b
- a b c a b c
- b c a b c a
- c b a c a b
- a a a 1 1 1
- b b b 2 2 2
- c c c 3 3 3
shell版本的答案:
- cat test.sh
- while read a b c
- do
- while read d e f
- do
- echo "$d $e $f"|awk -v a=$a -v b=$b -v c=$c -F'\n' '{print $0,""a"",""b"",""c""}'
- sed -i '1d' a
- break
- done < a
- done < b
- 输出结果:
- ./test.sh
- a b c a b c
- b c a b c a
- c a b c a b
- a a a 1 1 1
- b b b 2 2 2
- c c c 3 3 3
最后附上我的python的答案:
- [root@Virtual ~]# vi test.py
- [root@Virtual ~]# python test.py
- a b c a b c
- b c a b c a
- c b a c a b
- a a a 1 1 1
- b b b 2 2 2
- c c c 3 3 3
- [root@Virtual ~]# cat test.py
- #!/usr/bin/env python
- import linecache
- f=open('/root/a')
- LineCount=len(f.readlines())
- for i in range(1,LineCount+1):
- a=linecache.getline("/root/a",i)
- b=linecache.getline("/root/b",i)
- print a.strip(),b.strip()
- [root@Virtual ~]#
这个题目的答案还有许多的解答方法,比如用sed估计也可以,用perl也没问题。。。如果你知道,请不吝赐教。。。
本文转自你是路人甲还是霍元甲博客51CTO博客,原文链接http://blog.51cto.com/world77/654720如需转载请自行联系原作者
world77