[megoldva] Szövegfájl elejére egy sor

Időnként előfordul, hogy egy szövegfájl elejére kell tennem egy (fejléc vagy cím) sort utólag.
Van erre más, szebb megoldás, mint ez? cat fejlec > a; cat nagyfajl >> a; mv a nagyfajl

Hozzászólások

Esetleg ez?

cat fejlec nagyfajl > ujfajl

Irigyellek a problémáidért.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Elegánsabbnak elegánsabb (inkább nagyképűbb), de semmivel nem jobb ez:


sed -i -e '1s/^/fejlec\n/' fajlod.txt

sed -i -e "1 i akarmi" /tmp/test.txt

Ha mar elegancia, a sed NEM csak regexpes cserere jo..
A parancs dekodolasa:
-i (ez gonosz gnus cucc, hagyomanyorzok utaljak)
-e most jon a futtatando parancs
"1 i akarmi": 1. sorba insertald az akarmi szoveget
utana meg a filenev(ek) (ha tobb van, mindre vegrehajtja)

--
In truly successful relationships...
no one wears the pants.

Ez tetszik, köszi.

Bár a feladat kitűzésében nem fogalmaztam meg explicite, az lebegett vágyaim horizontján, hogy ne kelljen segédfájlt használni, s hogy bitang nagy fájloknál is jól működjön.

(Ötleted nyomán próbálkoztam még a sed -i -e "1 r fejl.txt" test.txt paranccsal, de így csak a második sorba tudtam appendálni. Ha 0-st írtam az elejére, annak nem örült a sed.)

Kérdés, hogy sed hogyan működik. Mert ha mindent RAM-ban old meg, lehet, bukod a bitang nagy file-ok kezelésére vonatkozó elvárásodat.

A filekezelés nem lassú, sokszor el sem jut a háttértárig a dolog, disk cache-nél nem feltétlenül kell tovább jutnia. Nyilván nagy file-nál ki kell íródjon.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

origi = `cat $file`
valami > $file
echo "$origi" >> $file

___________________________
http://lorem.hu
Az emberi tudás mindenkié!

-1
Ezt ne. Soha.

1) ha tobbsoros volt a $file, megszivtad.
2) ha partiz megas fajlokrol van szo, megszivtad
3) ha a 'valami' parancs nem fut le rendesen, es set -e a kornyezet, akkor buktad az eredeti tartalmat.

Van erre annyi szep aranyos megoldas, ezt ne hasznaljuk.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Oké, de ha ez egy scriptben van, _és_ közvetlenül a "valami" után megszakad a futás, akkor a változóba töltött régi tartalomnak heló van. Ez ellen lehet esetleg trap használatával védekezni. Az, hogy a fájl elejére írandó lom beíródik-e a fájlba, vagy sem, azt valóban másképp kell figyelni/megoldani.

Nem is tudom, ezt miért nem írta senki, én sem:

echo 'Fejléc' | cat - nagyfile >célfile

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Valamelyest igen, bár ennek én nem érzem bonyolultságát. Azért írtam egyébként ezt a formát, mert életszerűbbnek érzem, hogy van egy adatokat tartalmazó file, s a fejléc nem file-ban van, hanem most találjuk ki, így a fejléc tartalma az, amit épp meg kívánunk adni.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE