Bir dosyayı ardışık iki yeni satıra bölme


1

Ben böyle bir metin dosyası var

1. some topic
a
20p
ID: 20


2. something topic
another
here
there
ID: 30


3. ...
here
come
another
ID: 40

İki yeni satırla ayrılırlar. Bunu ayrı dosyalara nasıl bölebilirim? Bölünme kullanabilir ID ve şimdiye kadar gördüğüm çoğu örnek, yeni bir dosyanın başlığı olarak kalıplar kullanıyor. Perl python veya shell script kullanan herhangi bir şey iyidir.

Yanıtlar:


2

Basit bir otomat:

 #!/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

Dosyaları değiştirebilir veya "burada dosyayı değiştir" satırında ne istersen yapabilirsin.


Ah teşekkürler. Burada dosya ile basit sayaç ile değiştirin ve echo $ satırından dosyaya her şeyi pipo. Cazibe gibi çalış.
yumyai

1

Ruby kullanarak:

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.