Text 将txt文件合并到单个文件中,然后再次将其拆分
我有数百个txt文件,它们都在一个目录中。我希望能够做到以下几点:Text 将txt文件合并到单个文件中,然后再次将其拆分,text,awk,terminal,Text,Awk,Terminal,我有数百个txt文件,它们都在一个目录中。我希望能够做到以下几点: 将所有文件合并到一个txt文件中。此命令将在与文件名合并时插入一个符号(如§) [然后我对组合文件做了一些工作,包括进行更改。其中一些更改涉及使用优先级软件,该软件处理一个大文件比处理许多小文件效果更好] 使用第二个命令遍历合并的文件并将其拆分回单独的文件,使用符号旁边的文件名命名每个拆分文件 例子: 加入前: 文件1:“Towns.txt” 文件2:“水果和坚果.txt” 加入后,但在我做出改变之前 (单个文件) 加入后,我会
§
)李>
我尝试过的步骤 合并文件 我在中修改了答案,生成了一个
awk
命令,可以将文件与前缀为§符号的文件名连接在一起
awk '(FNR==1){print "§" FILENAME }1' * > ^0join.txt;
这似乎很有效
分割文件
这为分割文件提供了一个解决方案。我已根据自己的需要重新制作:
awk -v RS='§' '{ outfile = "output_file_" NR; print > outfile}' ^0join.txt
唯一的问题是输出文件的名称为“outfile1”、“outfile2”等。
它们还将文件名保留在每个文件的顶部,这是我不想要的。
而且,有时当我使用这个命令时,它只会将所有内容放在一个名为“outfile”的文件中,而不会将它们拆分
我还发现了另一个解决方案,我重新设计了:
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\u files/*.txt/
放在awk
第一个文件之后,并且可以从中删除单个文件名(未测试,但应该可以工作)它说“awk:无法打开文件水果输入记录编号25,文件水果源代码行编号1”输出文件仅包含城镇。@big_微笑,因为您的文件中有空间,所以我将它们包装在”
中尝试我编辑的代码。我检查了它们,它们都工作正常,请告诉我?join命令工作正常。但是,我有100个文件,所以如果它可以在目录上运行,而不需要指定文件名,那就更好了。Split命令可以工作,但它会将文件名保留在每个文档的顶部。(例如,新拆分的towns.txt文档以towns.txt开头)。@big_smile,检查我编辑的加入代码,它现在不应该写文件名,让我知道。@big_smile,要在目录上运行它,请尝试我的代码,最后不管文件名如何传递,比如awk'../path/to/files/*.txt
这将对所有文本文件等运行,同样,您也可以根据需要编辑此命令。
Apples
Pomegranates
Sycamore
awk '(FNR==1){print "§" FILENAME }1' * > ^0join.txt;
awk -v RS='§' '{ outfile = "output_file_" NR; print > outfile}' ^0join.txt
awk '{print $0 "file" NR}' RS='§' ^0join.txt
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