Bash 按行分割成文件

Bash 按行分割成文件

我有一个包含多行的巨大 .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 工作并不是一件容易的事(别让我开始使用蓝牙!)

相关内容