我有像这样的文本文件
1. some topic
a
20p
ID: 20
2. something topic
another
here
there
ID: 30
3. ...
here
come
another
ID: 40
它们由两个换行符分隔。我该如何将其拆分为单独的文件?拆分ID
也可以使用,但到目前为止我看到的大多数示例都使用模式作为新文件的标题。使用 perl python 或 shell 脚本的任何方法都可以。
答案1
它是简单的自动机:
#!/bin/sh
state=text
cat | while read line; do
if [ "$state" == "text" ]; then
if [ "$line" == "" ]; then
state="oneline"
fi
elif [ "$state" == "oneline" ]; then
if [ "$line" == "" ]; then
state="twolines"
else
state="text"
fi
else
echo "switch file here"
state="text"
fi
echo $line
done
您可以在“在此处切换文件”上切换文件或执行任何您想做的事情。
答案2
使用 Ruby:
IO.read("somefile.txt").strip.split("\n\n\n").each_with_index do |e, i|
z = e.split("\n", 2)
next unless z.size == 2
File.open("#{i}-#{z[0]}.txt", "w") { |f| f.write(z[1]) }
end