Portál AbcLinuxu, 18. května 2025 01:04

Dotaz: Pridání řádku do souborů za konkrátní řádek

13.7.2012 12:08 Thomash
Pridání řádku do souborů za konkrátní řádek
Přečteno: 316×
Odpovědět | Admin
Ahoj, lámu si hlavu s následujícím. Potřebuju prohledat asi 1000 souborů zda-li neobsahují nějaký řádek a pokud jej obsahují tak za tento přidat nový řádek. Nevíte někdo jak na to? Nějak se mi to nedaří.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

13.7.2012 13:32 Milan Roubal | skóre: 25
Rozbalit Rozbalit vše Re: Pridání řádku do souborů za konkrátní řádek
Odpovědět | | Sbalit | Link | Blokovat | Admin

#!/bin/bash
LIST=`ls -1`
for i in $LIST; do
  echo $i
  sed -e "s/radek_search/radek_search\nradek_new/" -f $i > $i_new
  mv $i_new $i
done
hruby nastrel principu, netestovano
Jendа avatar 13.7.2012 18:17 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Pridání řádku do souborů za konkrátní řádek
sed má parametr -i (inplace).
13.7.2012 13:37 juriad | skóre: 7
Rozbalit Rozbalit vše Re: Pridání řádku do souborů za konkrátní řádek
Odpovědět | | Sbalit | Link | Blokovat | Admin
ed soubor <<END
/hledany radek/a
pridany radek
.
w
q
END
a podle návratové hodnoty poznáš, zda byla změna provedena
13.7.2012 13:59 Thomash
Rozbalit Rozbalit vše Re: Pridání řádku do souborů za konkrátní řádek
Tak nakonec poreseno nasledovne:

sed -i '/text hledaneho radku/ a\

\ttext noveho radku ktery bude pridan pod nalezeny radek' *

Otestovano, funguje.
13.7.2012 14:06 eth4rendil | skóre: 13
Rozbalit Rozbalit vše Re: Pridání řádku do souborů za konkrátní řádek
Odpovědět | | Sbalit | Link | Blokovat | Admin
awk '1;/druhy/ {print "\n"}' /adresar_kde_su_subory/*
13.7.2012 18:15 Brilantní modř
Rozbalit Rozbalit vše Re: Pridání řádku do souborů za konkrátní řádek
Odpovědět | | Sbalit | Link | Blokovat | Admin

Tohle jsem vytvořil v Perlu:

#!/usr/bin/perl
use strict;
use warnings;
my @list_of_files = (
    "path/to/file-0",
    "path/to/file-1",
    "path/to/file-2"
); ## Seznam souborů.
foreach (@list_of_files) {
    my $fh; # filehandler
    my @lines;
    my $my_line = "obsah řádku"; ## Řádek, který má soubor obsahovat.
    open($fh, "<", $_) or die("$!\n");
    @lines = <$fh>;
    close($fh) or die("$!\n");
    open($fh, ">", $_) or die("$!\n");
    foreach my $line (@lines) {
        if ($line =~ /^$my_line$/) {
            $line .= "\n";
        }
        print($fh $line);
    }
    close($fh) or die("$!\n");
}

(Jsem začátečník, takže budu vděčný za jakékoliv připomínky nebo reakce.)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.