我有在大文件的开头和结尾添加行的场景。
我试过如下图所示。
对于第一行:
sed -i '1i\'"$FirstLine" $Filename
Run Code Online (Sandbox Code Playgroud)对于最后一行:
sed -i '$ a\'"$Lastline" $Filename
Run Code Online (Sandbox Code Playgroud)但是这个命令的问题在于它附加了文件的第一行并遍历整个文件。对于最后一行,它再次遍历整个文件并附加最后一行。由于它的文件非常大(14GB),这需要很长时间。
如何在只读取文件一次的情况下在文件开头添加一行,在文件末尾添加另一行?
例如:我有01.txt和02.txt文件,需要将这些文件的数据附加到新文件中new.txt。
它应该根据01.txt后跟02.txt文件附加数据。
在此之前,我只需要删除 files( 01.txt 02.txt)的第一行和最后一行,然后将它们附加到新文件中。
我们如何使用 UNIX 实现这一点?
我有我的三个大文件的场景Test.txt,Test1.txt并Test2.txt具有以下详细信息。
H|||||||||||||||||||||||
D||||||||||||||||||||||||
D|||||||||||||||||||||||
H|||||||||||||||||||||
D||||||||||||||||||||||||
D||||||||||||||||||||||||
T||||||||||||||||||||||||
Run Code Online (Sandbox Code Playgroud)
我必须删除除 D 行以外的所有行。在我的所有三个文件中,它应该如下所示。(超过 10 GB)
D||||||||||||||||||||||||
D|||||||||||||||||||||||
D||||||||||||||||||||||||
D||||||||||||||||||||||||
Run Code Online (Sandbox Code Playgroud)
因此,在仅保留Test.txt,Test2.txt和 中的D 行之后Test3.txt,我必须将它们合并到新文件中。
我已经使用sed完成了上述操作。
sed '/^\('D'\)|/!d' $Filename.txt >> $NewFilename.txt
Run Code Online (Sandbox Code Playgroud)
但由于文件很大,需要很长时间。
我们可以使用任何其他命令以有效的方式执行此操作吗?