我有一个看起来像的文本文件:
6789 Here is a bunch of text
4565 More text......................................................
.....etc
我需要提取第一个单词(数字)并创建一个包含以下所有文本的新文件,将第一个单词作为文件名,直到空白行,然后重复创建许多文本文件。
答案 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中解决这个问题。