Kezdőlap › Fórumok › Programozás › szöveges állomány editálása
- This topic has 13 hozzászólás, 6 résztvevő, and was last updated 18 years, 1 months telt el by
uzsolt.
-
SzerzőBejegyzés
-
2007-01-25-13:06 #2088189
nem csak awk-val lehet megoldani.
cat filename | cut -f1 -d’ ‘
ezzel megkapod az elsö oszlopát a fájlak, aholis az oszlopelválasztó a space karakter
aztán innen darabolod
egyik változó = cut -f1 -d’-‘
másik változó = cut -f2 -d’-‘
harmadik változó = cut -f3 -d’-‘
aztán vissza a fájlba $egyik-$harmadik-$masodik
még lehet ezután jönne egy sed, hogy a bemenö formátumú dátumokat cserélje ki a kiemnö formátumúkraValami ilyesmi… bár elég brutális módszer, de müködik. 🙂
Az awk nem rossz, csak nem értek hozzá, nem bírom megérteni és jó leírást sem találtam eddig hozzá.
De ha te jobban tudod, megköszönném, ha hozzámvágnál egy linket vagy egy pdf-et.2007-01-25-13:21 #2088190Awk-hoz még én sem találtam normális leírást amből megérteném, hogyan lehet használni hatékonyan. Pár dolgot tudok benne de az édeskevés.
Ezt a módszert viszont kipróbálom. Köszönöm!
2007-01-25-14:29 #2088191Sikerült odáig eljutnom, hogy:
– cat -el kiszűröm magamnak a szükséges oszlopot, egy egyszerű awk-ot írtam amivel át tudom alakítani a dátumformátumot…….most már csak annyit kéne, hogy a cat kimenetét átadjam az awk proginak és az awk progi kimenetét visszatöltsem a fileba az eredeti oszlopot felülírva…na erre nem jövök rá hogyan csináljam. Valaki tudna segíteni?? Köszönöm!2007-01-25-14:32 #2088192Az awk pedig nem túl bonyolult.
A feladat megoldása awk -al:Code:awk -F/ ‘{print $3 „-” $2 „-” $1}’ filename„-F” a mezőelválasztó: /
a print gondolom ismert, a $1,$2,$3 az input mezőket jelöliA kódot nem próbáltam ki, de működnie kell.
Szerk.:
Utólag jöttem rá hogy az eredeti rekordban nemcsak ez a dátum van.
Így a helyzet bonyolultabb, mert a teljes rekordot kezelni kell. Ismerni kellene a dátumok kezdő pozícióit a rekordban ha esetleg több is van és substr() -el kiemelni.
Vagy sed is jó ha a dátumot valamilyen regexp-el fel lehet ismerni.ELaci
2007-01-25-14:44 #2088193Köszi, de ez a része már működik. Az egymás kimenetének átadását kéne megoldanom meg a fileba visszaírást.
2007-01-25-14:46 #2088194viszonylag egyszerü
mivel megvan a kezdeti dátum, ezt eltárolod egy változóba,
majd megkreálod az újat, aztán:
sed s/$regidatum/$ujdatum/g > ujfile
asszem
és kész 🙂2007-01-25-15:00 #2088195Sovi wrote:Köszi, de ez a része már működik. Az egymás kimenetének átadását kéne megoldanom meg a fileba visszaírást.Az eset amikor a dátum pl. az 5. pozícióban kezdődik:
Code:awk ‘{print substr($0,1,4) substr($0,11,4) „-” substr($0,8,2) „-” substr($0,5,2) substr($0,13,length($0) – 16)}’ filenev > tempfile(lehet hogy a pozíciókkal kicsit elszámoltam magam)
ELaci
2007-01-25-16:46 #2088196Mi a francnank már megint agyonbonyolítani?
sed -i „s@([0-9]{2})[red]/[/red]([0-9]{2})[red]/[/red]([0-9]{4})@3-2-1@g” fájlnév
(a színezés csak a könnyebb olvashatóság kedvéért van)
2007-01-26-07:02 #2088197Köszönöm a tippeket. Most már menni fog.
2007-06-13-18:33 #2088198Valaki REGEX guru segítsen már légyszi!
MC-vel szeretnék szövegrészt cserélni, viszont nem meghatározott a tartalom, de két jel között van.
PHP-ben így csinálnám pl.:
^$MC-ben meg lehet adni, hogy reguláris kifejezés szerint keressen. Viszont nem ismerem a pontos szintaktikát, gondolom a PHP-s eregi és preg kicsit más, mint amit bash-ban, vagy MC-ben használni lehet.
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz