我有数百个 txt 文件,它们都在一个目录中。我希望能够执行以下操作:
- 将所有文件合并到一个 txt 文件中。该命令将在与文件名连接时插入一个符号(例如
§
)。 - [然后我对组合文件进行一些工作,其中包括进行更改。其中一些更改涉及使用优先级软件,该软件处理一个大文件比处理大量小文件效果更好]。
- 使用第二个命令遍历连接的文件并将其拆分回单独的文件,并使用符号旁边的文件名来命名每个拆分文件。
示例:
加入之前:
文件 1:“Towns.txt”
Béthlem
Cabul
Corinthia
ruined lands
eshcol
Gabbatha
old town
文件 2:“水果和坚果.txt”
Apples
Pomegranates
Sycamore
加入之后,但在进行更改之前
(单个文件)
§Towns.txt
Béthlem
Cabul
Corinthia
ruined lands
eshcol
Gabbatha
old town
$Fruits and Nuts.txt
Apples
Pomegranates
Sycamore
加入后我进行更改
(这些更改是在单个文件中手动进行的)
§Towns.txt
Bethlehem
Cabul
Corinth
Ruined lands
Eshcol
Gabbatha
The Old Town
$Fruits and Nuts.txt
Apples
Pomegranates
Sycamore
拆分后:
文件 1:“Towns.txt”
Bethlehem
Cabul
Corinth
Ruined lands
Eshcol
Gabbatha
The Old Town
文件 2:“水果和坚果.txt”
Apples
Pomegranates
Sycamore
我尝试过的步骤
合并文件
我修改了 this thread 中的答案,创建一个 awk
命令,该命令可以将文件与以 § 符号为前缀的文件名连接在一起。
awk '(FNR==1){print "§" FILENAME }1' * > ^0join.txt;
这似乎运作良好。
分割文件
这个thread提供了分割文件的解决方案。我根据自己的需要重新设计了这个:
awk -v RS='§' '{ outfile = "output_file_" NR; print > outfile}' ^0join.txt
唯一的问题是输出文件的名称为“outfile1”、“outfile2”等。 他们还将文件名保留在每个文件的顶部,这是我不想要的。 另外,有时当我使用此命令时,它只会将所有内容放入一个名为“outfile”的文件中,而不是将它们分开。
我还发现了this thread其中有另一个解决方案,我重新设计了:
awk '{print $0 "file" NR}' RS='§' ^0join.txt
但是,这似乎没有任何作用。
注释
§
可以是任何其他符号。
我使用的是 Mac OS 10.14.6,所以我想要一些可以在 Mac OS 终端中运行的东西。
最佳答案
您可以尝试以下操作吗?
对于加入命令:
awk 'FNR==1{print "§" FILENAME}; 1' Towns.txt "Fruits and Nuts.txt" > Output_file
对于分割文件:
awk '/^§/{close(file);sub(/^§/,"");file=$0;next} {print > (file)}' Output_file
注意:根据OP的评论,如果需要将 .txt
文件传递给命令,那么我们可以将 /complete/path/to/txt_files/*.txt/
在 awk
代码第 1 个和第一个代码之后可以从那里删除单个文件名(未测试,但应该可以工作)
关于text - 将 txt 文件合并为一个文件,然后再次将它们拆分回来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58013737/