Autouprava textovych suborov

Všetko ohľadom Linuxu...
Aiden
Darca
Darca
Používateľov profilový obrázok
Príspevky: 2213
Registrovaný: 06 apr 2007, 14:28

Autouprava textovych suborov

Príspevok od používateľa Aiden »

Potreboval by som zariadit nasledujucu vec:
Mam priecinok v ktorom je jeden textovy subor, ktory ma viac casti - zacinaju sa % a koncia &...

Kód: Vybrať všetko

Subor

%     Cast 1

bla
bla
bla

&

%     Cast 2

bla
bla
bla

&
mojim cielom je (rucne) vytvorit niekolko textovych suborov s nazvom danych casti, ktore by obsahovali to, co tej casti prislucha, avsak pri editacii "velkeho" textaku by sa updatoval obsah danych casti

bol by niekto ochotny pomoct mi s tymto (beruc do uvahy, ze som pred 10 minutami dopisal prvy bash script, ktory mi fungoval :D)
dakujem a ponukam aspon K+ :)
pato83
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3916
Registrovaný: 21 nov 2005, 22:12

Re: Autouprava textovych suborov

Príspevok od používateľa pato83 »

Nazdar, tak tvojim kamaratom by sa mala stat GNU awk uzivatelska prirucka . Co sa tyka toho updatu, tak napr. nieco taketo by malo fungovat:

Kód: Vybrať všetko

#!/bin/bash

TIME=60    # cas do dalsieho updatu jednotlivych casti  v sekundach
FILE="hlavny_subor.txt"
BACKUP_FILE="${FILE}.zaloha"

CheckBackup()   # vzdy sa skontroluje, ci existuje zaloha len raz pri starte skriptu
{
if [ ! -f "$BACKUP_FILE" ]  # pozri manualove stranky [i]test[/i] , ! neguje vysledok, -f zistuje ci existuje a je to subor
then
        touch "$BACKUP_FILE"   # vytvori prazdny subor so stanovenym nazvom
fi   
}

AwkFunction()   # toto je tvoje :)
{
:
}

CreateBackup()   # vytvori zalohu po ukonceni funkcie AwkFunction
{
cp "$FILE" "$BACKUP_FILE"
}

#################################################################

CheckBackup

while true    # nekonecna smycka
do
        if diff --report-identical-files "$FILE" "$BACKUP_FILE" &>/dev/null  # zahlasi ak su subory identicke; vystup potlaceny; dolezity je exit status
        then
                sleep "$TIME"    # kedze bol identicky, ide sa spat na urceny cas
        else
                AwkFunction       # kedze neboli subory identicke, vykonaju sa vsetky funkcie v danom poradi a zase sa ide spat
                CreateBackup
                sleep "$TIME"
        fi
done
Nevyhoda je, ze treba drzat dva hlavne subory. Je to ale plain text, takze nevidim to ako zasadny problem. Rieseni je urcite aj viac, toto je ale ako zaklad myslim celkom v poriadku. Priebezne to tu mozes ukazovat, ako to postupuje. Zatial.
Aiden
Darca
Darca
Používateľov profilový obrázok
Príspevky: 2213
Registrovaný: 06 apr 2007, 14:28

Re: Autouprava textovych suborov

Príspevok od používateľa Aiden »

Dakujem za radu, uz to mam ale vyriesene trochu brutalnejsie :), Kazdopadne posielam K+

Kód: Vybrať všetko

#!/usr/bin/perl


use strict;
use warnings;


my $file;
my $subfile;
my $part;
my $content;


unlink glob('*.txt');

open($file, "@ARGV") || die "Bad file: @ARGV\n";
        while(<$file>) {

                if(s/^&&\s+(\w+)\s+/$1/) {
                        $part = $_;
                        open($subfile, ">", "$part.txt") || die "can't open: $part\n";
                        next;
                };

                if(/^%%$/) {
                        print $subfile $content;
                        close $subfile;
                        $part="";
                        $content="";
                        next;
                };

                $content .= $_ if $part;
        };

close $file || die "Error occured ..\n";
exit 0;
jedoducho tie male premaze a vytvori vzdy nanovo, ked su potrebne :)
Napísať odpoveď