【问题标题】:combining the text files in to one text file将文本文件合并为一个文本文件
【发布时间】:2014-07-07 08:41:04
【问题描述】:

我有如下要求。 我正在使用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 读取变量

提前致谢

【问题讨论】:

  • paste -d' ' f1 f2 f3 适合我...

标签: linux shell


【解决方案1】:

我希望您希望 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''”给出了相同的确切结果!

【讨论】:

  • 我在第 9 行的末尾得到了无例外的语法
  • paste "-d ' '" 给出了我的要求。但我必须从所有文本文件中删除第一个位置。
  • 获得最终文本文件后,我将该文本文件传递给 while 循环。在while循环中,我在程序中使用变量
【解决方案2】:

你可以用 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

【讨论】:

    猜你喜欢
    • 2021-11-08
    • 1970-01-01
    • 2017-08-17
    • 1970-01-01
    • 2013-01-09
    • 2017-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多