我有一个文本文件,其中包含以下示例的内容,我想将该文件拆分为多个文件。
[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