我有一个包含多行的巨大 .txt 文件,但一行上有一个特定的字符串将多行彼此分隔开
我想使用该字符串拆分为多个名为当前字符串的文件。
特定字符串示例:
Found matches in (anything can be here):
巨大的 .txt 中的数据示例:
Found matches in (anything can be here):
..............
..............
..............
..............
..............
..............
Found matches in EXAMPLE:
..............
..............
..............
..............
..............
..............
期望的输出:
Found matches in (anything can be here).txt < contains data below its self but before another line stating " Found matches in
Found matches in EXAMPLE.txt < contains data below its self but before another line stating " Found matches in
此外,可能存在重复的“Found matches in (anything can be here)”行与数据,因此与其覆盖当前行,是否可以重命名 (1) 和 (2) 和 (3) 等,或者只是简单地重命名也添加当前文件(不覆盖)
答案1
会走多远
awk '/^ *Found matches/ {FN = $0 ".txt"; next} {print >> FN}' file
我懂了?
编辑: 更正版本(“找到匹配项”不是在第一行):
awk '/^ *Found matches/ {if (FN) close (FN); FN = $0 ".txt"; next} FN {print >> FN}' file
答案2
老实说,我是 bash 新手,我什至不知道从哪里开始,抱歉,我知道这个地方是用于学习的,但任何方向都会有所帮助
您不必因为不知道而道歉。没有人天生就擅长编写脚本。
然而,就你现在的问题而言,与其说是寻求帮助,不如说是“请为我写一个解决 X 和 Y 的脚本”。
这个(以及大多数其他)GNU/Linux 社区通常不赞成这些问题。
但是,回到手头的问题。事实上,您甚至不知道从哪里开始。几年前,我是这样开始的:
尽管我采取的最重要和最有用的步骤是用过的GNU/Linux 用于一切。意义; GNU/Linux 成为我唯一的操作系统,从而迫使我使用我拥有的技能来解决我遇到的任何问题,或者迫使我学习新技能*。当面对后者时,我经常向社区寻求帮助 - 这也教会了我(我希望!)如何提出好的问题。
GNU/Linux 的众多优点之一是,没有任何“繁文缛节”以许可和/或高软件成本的形式阻止您。您可以自由地修改您选择的任何发行版。这样做,你将要变得足够熟练,不仅可以解决您问题中提出的问题,还可以解决许多其他问题。
现在,我充分意识到我的路线可能并不适合所有人。当然,您应该选择最适合您的学习途径。
最后,我真诚地希望这能不是听起来居高临下,我的意图恰恰相反;让您更感兴趣并深入挖掘 GNU/Linux 的极客世界。
黑客快乐!
* 献给你们这些年轻人;大约十年前,使用 GNU/Linux 破解 Xorg 并让音频和 WiFi 工作并不是一件容易的事(别让我开始使用蓝牙!)