我有一个像这样的文件
PATTERN1abcdef_abcd_ab
a
b
PATTERN2azerty_az_aze
c
d
我需要将它分成如下的小文件: PATTERN1abcdef_abcd_ab.txt,包含:
PATTERN1abcdef_abcd_ab
a
b
和PATTERN2azerty_az_aze.txt,包含:
PATTERN2azerty_az_aze
c
d
我找到了这个perl命令,它运行正常:
perl -n -e '/^PATTERN/ and open FH, ">output_".$n++; print FH;' inputfile.txt
除了它不使用包含模式的字符串重命名输出文件。 (文件是output_1。例如)
编辑:抱歉,我犯了一个错误,不应该从输出文本文件中删除包含PATTERN的字符串,并且应该是文件名。
答案 0 :(得分:0)
试试这个:
perl -n -e '/^PATTERN.*/ and open FH, "$&.txt"; print FH;' inputfile.txt
答案 1 :(得分:0)
如果您尝试将值放入已命名的文件中 PATTERN1(即匹配您的模式)。 然后,您需要在正则表达式中捕获名称并将其用作文件名的一部分。
perl -n -e '/^(PATTERN\d)/ and open(FH, "> $1.txt")and next; print FH;' inputfile.txt
注意我正在捕获()中的模式,而$ 1将保存我们匹配的值。我还在文件打开后添加了下一个,否则匹配也将包含在文件中。