我有.txt
来自光谱仪的数据,有 800 行和 5 列。我想将大约 15 个这样的文件合并在一起。所以最终.txt
文件应该有 800 行和 75 列。
所有.txt
文件如下所示:
Wave ;Sample ;Dark ;Reference;Absorbance
[nm] ;[counts] ;[counts] ;[counts] ;[A.U]
200.00; 34.647; -0.317; 79.668; 0.35734
201.00; 29.937; -21.220; 70.385; 0.25357
202.00; 48.826; -0.527; 99.657; 0.30721
203.00; 43.201; 4.165; 136.775; 0.53103
...
所需文件:
Wave ;Sample ;Dark ;Reference;Absorbance; Wave ;Sample ;Dark ;Reference;Absorbance
[nm] ;[counts] ;[counts] ;[counts] ;[A.U]; [nm] ;[counts] ;[counts] ;[counts] ;[A.U]
200.00; 34.647; -0.317; 79.668; 0.35734; 200.00; 34.647; -0.317; 79.668; 0.35734;
201.00; 29.937; -21.220; 70.385; 0.25357; 201.00; 29.937; -21.220; 70.385; 0.25357
202.00; 48.826; -0.527; 99.657; 0.30721; 202.00; 48.826; -0.527; 99.657; 0.30721
203.00; 43.201; 4.165; 136.775; 0.53103; 203.00; 43.201; 4.165; 136.775; 0.53103
我试过:
cat *.txt > file.txt
但是这会添加.txt
文件,就像添加新行一样,而不是像添加新列一样。
答案1
您正在寻找paste
实用程序,例如
paste *.txt > file.txt
查看其手册页了解详细信息,最值得注意的是-d
指定分隔符的选项。
答案2
简单示例
我将分隔符设置为“空格”,并消除多个空格。
$ cat file-1
ett tu tre
1 2 3
11 22 33
$ cat file-2
fyra fem sex
4 5 6
44 55 66
$ cat file-3
sju atta nio
7 8 9
77 88 99
$ paste file-?
ett tu tre fyra fem sex sju atta nio
1 2 3 4 5 6 7 8 9
11 22 33 44 55 66 77 88 99
$ paste -d ' ' file-?
ett tu tre fyra fem sex sju atta nio
1 2 3 4 5 6 7 8 9
11 22 33 44 55 66 77 88 99
$ paste -d ' ' file-? | tr -s ' ' ' '
ett tu tre fyra fem sex sju atta nio
1 2 3 4 5 6 7 8 9
11 22 33 44 55 66 77 88 99
建议的命令行
也许您想消除空格?您想保留分号作为分隔符。尝试使用以下命令行
paste -d ';' input-filespec-with-wildcard | sed 's/ //g' > output-file
input-filespec-with-wildcard
可能在哪里*.txt
(如果要合并的文件是txt
目录中唯一的文件)。
编辑(使用真实数据)
将文件转换为 unix/linux 文本格式,
CarriageReturn + LineFeed
-->LineFeed
使用dos2unix
使用以下命令删除空白行
for i in *.TXT;do echo sed '/^$/'d "$i" > "${i/.TXT/.txt}";done
使用以下命令删除标题行
for i in *.txt;do grep ';*;' "$i" > "${i/.txt/.txt1}";done
(标题行不包含至少两个分号。)
使用以下命令合并文件
paste -d ';' *.txt1 | sed 's/ //g' > merged-file.txt
我将合并的文件读入 LibreOffice Calc 并使用分号作为分隔符。看起来我认为你想要它。我希望它能按照这些说明为你工作。否则请描述你剩下的问题并告诉我你是否希望我上传“我的” merged-file.txt
。
LibreOffice Calc
如果您只想执行一次,您可以在 Libre Office Calc 中手动/直观地执行,方法是将文件粘贴到电子表格中。您可以编辑电子表格中的位置并删除造成混乱的线条。
我想说在 LibreOffice Calc 中手动执行此操作相当容易,但如果您需要多次执行此操作或处理大量文件,则最好使用并改进命令行方法。