将文本文件合并到一个文本文件中

时间:2014-07-07 08:41:05

标签: linux shell

我有如下要求。 我正在使用linux

我有一组文本文件,如text1.txt ,text2.txt, text3.txt。 现在我要合并成一个最终的文本文件。

text1.txt

1    
NULL    
NULL    
4

text2.txt

1    
2    
NULL    
4

text3.txt

a    
b    
c    
d

我正在使用以下命令:

paste -d ' ' text1.txt text2.txt text3.txt  >> text4.txt

我得到了:

text4.txt

1 1 a   
2 b    
c  
4 4 d

但我希望输出如下

text4.txt

1 1 a
NULL 2 b
NULL NULL c
4 4 d

注意: - NULL表示空格

我将此text4传递给另一个循环作为输入,所以在这里我通过positionl读取变量

提前致谢

2 个答案:

答案 0 :(得分:0)

我希望您希望TAB在file4.txt中分隔您的记录......这是怎么回事?

NLINES=$(wc -l file1.txt | awk '{print $1}')
rm -f file4.txt
for i in $(seq 1 $NLINES); do
  rec1=$(sed -n "$i p" file1.txt)
  rec2=$(sed -n "$i p" file2.txt)
  rec3=$(sed -n "$i p" file3.txt)
  echo -e "$rec1\t$rec2\t$rec3" >> file4.txt
done

但实际上是粘贴,没有" -d' '"给出了相同的结果!

答案 1 :(得分:0)

您可以使用AWK命令

实现相同功能
awk '{a[FNR]=a[FNR]$0" "}END{for(i=1;i<=length(a);i++)print a[i]}' text1.txt text2.txt text3.txt >> text4.txt