使用csplit根据正则表达式将一个文件拆分为多个文件

使用csplit根据正则表达式将一个文件拆分为多个文件

我有一个文本文件,其中包含以下示例的内容,我想将该文件拆分为多个文件。

[TXT]   /path/to/[TXT]
[BAT]   /path/to/[BAT]
[TXT]   /path/to/blah/[TXT]
[BAT]   /path/to/blah/[BAT]

所以我发现我可以用来csplit至少部分地实现我想要实现的目标。

csplit -f 'paths-' -b '%04d.txt' 'path/to/filelist.txt' '/^\[(.*)]\t/' '{*}'

然而这会分裂成paths-0000.txt.

我希望有更多类似paths-txt.txt和的东西paths-bat.txt

无论如何,我可以将正则表达式匹配到前缀匹配中吗?

我确实尝试过诸如-f 'paths-$1.txt'和 之类的事情-f 'paths-\1.txt'

但这些都没有达到我希望他们做的事情。

答案1

使用 csplit 是不适合这项工作的工具。

我使用 awk 来实现我想要做的事情。

awk -F"\t" '{print > $1".txt"}' /path/to/filelist.txt

如果您希望限制它,则可以在拆分后仅保留文件的某些部分,但我需要/想要所有内容。

awk -F"\t" '{print $2 > $1".txt"}' /path/to/filelist.txt

相关内容