最近在其他論壇上看到幾個網友的面試題,這些天,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