基于空行的新文本文件

时间:2011-11-08 20:13:31

标签: regex linux

我有一个看起来像的文本文件:

6789 Here is a bunch of text

4565 More text......................................................
.....etc

我需要提取第一个单词(数字)并创建一个包含以下所有文本的新文件,将第一个单词作为文件名,直到空白行,然后重复创建许多文本文件。

2 个答案:

答案 0 :(得分:2)

awk行可以做到:

awk 'BEGIN{RS=""} {fn=$1;gsub(/^[0-9]+\s/,"");print $0 > (fn".txt")}' yourFile

<强>测试

kent$  l 
total 0
(no file in current dir)

kent$  echo "6789 Here is a bunch of text

4565 More text......................................................
.....etc"|awk 'BEGIN{RS=""} {fn=$1;gsub(/^[0-9]+\s/,"");print $0 > (fn".txt")}'

kent$  ls
4565.txt  6789.txt

and, the contents are:

kent$  head *.txt
==> 4565.txt <==
More text......................................................
.....etc

==> 6789.txt <==
Here is a bunch of text

答案 1 :(得分:0)

awk和斯普利特会做(部分)工作:

$ awk '{print $1} < foo | split -p '^$'

如果你真的需要根据文件开头的数字重命名每个文件,那么你可能想要在perl或python中解决这个问题。