2014-07-17 33 views
1

我有兩個文件。我想加入他們列並將它們從製表符分隔到空格分隔。 需要什麼在 上粘貼文件B文件Btab分隔bash中的文件

爲了使這項工作?

+3

這就是粘貼如何自然運作。你嘗試了什麼,結果是什麼,你是否諮詢過「man paste」?此外,'類型粘貼'給出了什麼? – Boldewyn

+0

可能是愚蠢的,我很長一段時間在linux命令行上工作,第一次看到粘貼命令......我以爲op給出'paste'作爲示例命令。看着「man」,這個命令非常有限。我現在並不感到驚訝,我從來沒有用過它。 – akostadinov

+0

@akostadinov它是有限的原因(UNIX的哲學:只做一件事,但做得很好),並與其他小命令,如'cut','cat','head',一起玩... – Boldewyn

回答

0

通過AWK,

awk 'FNR==NR{a[FNR]=$1; next} {print a[FNR]"\t"$2}' file1 file2 

例子:

$ cat m 
cat 
dog 
$ cat r 
foo bar 
bar foo 
$ awk 'FNR==NR{a[FNR]=$1; next} {print a[FNR]"\t"$2}' m r 
cat bar 
dog foo 
+0

我不知道這個解決方案。挺有趣的。對於小型數據集來說,它也是一個好的選擇。但在我看來,awk並不是這項任務的正確工具。構建一個包含整個第一個文件內容的數組可能會降低內存的效率和速度。雖然我沒有進行基準測試。 – akostadinov

+1

@akostadinov awk沒有數組'awk'的方法FILENAME == ARGV [1] {printf($ 0「」); getline

0

談到純bash中,這樣的事情,沒有測試過,但你應該能夠修復任何錯誤:

exec 3<file1 
exec 4<file2 
while :; do 
    read -r -u 3 f1_w || exit 
    read -r -u 4 f2_w1 f2_w2 || exit 1 
    echo -e "${f1_w}\t${f2_w2}" 
done 
相關問題