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
- 8608 megtekintés
Hozzászólások
Esetleg ez?
cat fejlec nagyfajl > ujfajl
- A hozzászóláshoz be kell jelentkezni
Irigyellek a problémáidért.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Elegánsabbnak elegánsabb (inkább nagyképűbb), de semmivel nem jobb ez:
sed -i -e '1s/^/fejlec\n/' fajlod.txt
- A hozzászóláshoz be kell jelentkezni
vagy \n helyett CR+LF?
(CR+LF: CR (U+000D) followed by LF (U+000A), http://en.wikipedia.org/wiki/Newline)
- A hozzászóláshoz be kell jelentkezni
Linuxon \n a szokás. Windows-on meg \r\n, azaz CR, LF.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
-.- összekevertem
- A hozzászóláshoz be kell jelentkezni
Nem. De marha egyszerű, nézz meg egy szövegfile-t azon a rendszeren, amit használsz. Különben is:
echo Hello | od -An -tx1
48 65 6c 6c 6f 0a
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
heh :) kösz
- A hozzászóláshoz be kell jelentkezni
macos-en meg LF, CR.
Csak mert ok kulonbozok.
- A hozzászóláshoz be kell jelentkezni
Think different! :)
--
In truly successful relationships...
no one wears the pants.
- A hozzászóláshoz be kell jelentkezni
OS X-en mar nem, ok is LF-et hasznalnak.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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.)
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
Rendben, köszi ezeket. Nagy fájlok esetén maradok a segédfájlos módszernél.
- A hozzászóláshoz be kell jelentkezni
Ha csak egy parancsod van, nem kell -e.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
origi = `cat $file`
valami > $file
echo "$origi" >> $file
___________________________
http://lorem.hu
Az emberi tudás mindenkié!
- A hozzászóláshoz be kell jelentkezni
-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
- A hozzászóláshoz be kell jelentkezni
-1 szintén. A "valami" lefutása után megszakad a futás, és máris kuka az eredeti tartalom... (Ezt mondjuk egy okosan belőtt trap megoldhatja, de akkor is ordenáré baromság)
- A hozzászóláshoz be kell jelentkezni
A trap nem oldhatja meg, leven, a > mar _azelott_ truncateli a tartalmat, mielott a valami parancs _megkeresese_ elkezdodne. Tehat egy "no such file or directory" mar nulla meretu fajlt csinalt.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
Ja ertem, mire gondolsz, hogy a valtozoba toltott regi tartalmat visszairni a fajlba esetleg... hat igen, erre fel lehet hasznalni a trapet.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
Nem is tudom, ezt miért nem írta senki, én sem:
echo 'Fejléc' | cat - nagyfile >célfile
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Mert tkp. megegyezik a kérdésben referenciaként megjelenő kóddal, ha befejezed (vagyis ha odateszed a szükséges mv parancsot, ami azért kell, mert a célfájl = eredeti_nagyfájl).
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni