Hozzászólások
Sziasztok!
Po fájlokból szeretném kinyerni a fordító e-mail címét.
Pl.
vmi.po tartalma
...
"Last-Translator: Név <név@domain.org>\n"
...
Ebből nekem csak a név@domain.org kellene.
Addig eljutottam, hogy grep "Last-Translator" vmi.po | sed 's/.*ranslator: \(.*\) <.*>.*/\1/' parancs kiadja nekem a fordító nevét (Név). Most már csak az e-mail cím kellene.
- A hozzászóláshoz be kell jelentkezni
Én a sed-hez és a regex kifejezésekhez sosem értettem, ilyen feladatokhoz mindig a cut-ot hívom segítségemre, én azt jobban szeretem:
[code:1:de3dcc908b]laca@voices ~ $ echo "Last-Translator: Név <név@domain.org>" | cut -d ' ' -f 2
Név
laca@voices ~ $ echo "Last-Translator: Név <név@domain.org>" | cut -d '<' -f 2 | cut -d '>' -f 1
név@domain.org[/code:1:de3dcc908b]
- A hozzászóláshoz be kell jelentkezni
Esetleg: mawk - pattern scanning and text processing language
Sajnos konkrét példát nem tudok, mert nem ismerem.
- A hozzászóláshoz be kell jelentkezni
[quote:786501a58e="lacipac"]Én a sed-hez és a regex kifejezésekhez sosem értettem, ilyen feladatokhoz mindig a cut-ot hívom segítségemre, én azt jobban szeretem:
[code:1:786501a58e]laca@voices ~ $ echo "Last-Translator: Név <név@domain.org>" | cut -d ' ' -f 2
Név
laca@voices ~ $ echo "Last-Translator: Név <név@domain.org>" | cut -d '<' -f 2 | cut -d '>' -f 1
név@domain.org[/code:1:786501a58e]
Kösz a gyors választ. Működik. Az első esetben nálam így néz ki:
[code:1:786501a58e]grep -i "Last-Translator" valami.po | cut -d ' ' -f 2,3[/code:1:786501a58e]
Hasznos ez a cut, eddig még nem használtam.
- A hozzászóláshoz be kell jelentkezni
echo "Last-Translator: Név <név@domain.org> "|sed "s,^.*<\(.*\)>,\1,"
- A hozzászóláshoz be kell jelentkezni
[quote:a947545f81="macskas"]echo "Last-Translator: Név <név@domain.org> "|sed "s,^.*<\(.*\)>,\1,"
Az eredeti sor így néz ki:
[code:1:a947545f81]"Last-Translator: Név <név@domain.org>\n"[/code:1:a947545f81]
Az általad írt sed parancs ezt adja ki:
[code:1:a947545f81]név@domain.org\n"[/code:1:a947545f81]
Tehát el kellen még tüntetni a \n"-ot. Ha van kedved gondolkozz rajta, de a probléma a cut paranccsal már meg lett oldva.
- A hozzászóláshoz be kell jelentkezni
[quote:250106f878="dvornikl"]Sziasztok!
Po fájlokból szeretném kinyerni a fordító e-mail címét.
Pl.
vmi.po tartalma
...
"Last-Translator: Név <név@domain.org>\n"
...
Ebből nekem csak a név@domain.org kellene.
Addig eljutottam, hogy grep "Last-Translator" vmi.po | sed 's/.*ranslator: \(.*\) <.*>.*/\1/' parancs kiadja nekem a fordító nevét (Név). Most már csak az e-mail cím kellene.
Sziasztok!
Nem szeretnék flame-et, pusztán mint lehetőség említem meg, ha valaki nem tudna róla.
A VIM képes makrózni. A dolog elképesztően egyszerű:
parancs üzemmód
qa // az _a_ bufferbe ment
<END>
F@ //visszafelé keres @-ot
<CTRL><LEFT> //szó elejére ugrik
v //kijelölés kezdete
<HOME> //kijelölés sor elejéig
x //kijelölés törlése
J //következő sortörés törlése
r§ //a sortörés törlésénél a sortörés helyére beszúrt egy SPACE-t, most ez // lesz lecserélve §-ra, mondjuk legyen ez a szeparátor karakter
<DOWN> //köv. sor
q //mentés befejezése
Ezekután @a végrehajtja ezt a folyamatot.
Természetesen 1000@a 1000-szer hajtja végre. Ráadásul a VIM van annyira kedves, hogy észreveszi, ha a file aljára ért és akkor abbahagyja az ismétlést. Ja és akkor az eredmény USER1@DOMAIN.1§USER2@DOMAIN2§...
HTH.
Üdv.: Tomyellow
- A hozzászóláshoz be kell jelentkezni
[quote:15677c1233="dvornikl"][quote:15677c1233="macskas"]echo "Last-Translator: Név <név@domain.org> "|sed "s,^.*<\(.*\)>,\1,"
Az eredeti sor így néz ki:
[code:1:15677c1233]"Last-Translator: Név <név@domain.org>\n"[/code:1:15677c1233]
Az általad írt sed parancs ezt adja ki:
[code:1:15677c1233]név@domain.org\n"[/code:1:15677c1233]
Tehát el kellen még tüntetni a \n"-ot. Ha van kedved gondolkozz rajta, de a probléma a cut paranccsal már meg lett oldva.
nekem jól működik.
dvornikl: Mivel a kettő gondolom együtt kell ("Addig eljutottam, hogy grep "Last-Translator" vmi.po | sed 's/.*ranslator: \(.*\) <.*>.*/\1/' parancs kiadja nekem a fordító nevét (Név). Most már csak az e-mail cím kellene."), megbarátkoztam a reguláris kifejezésekkel, és erre jutottam:
[code:1:15677c1233]$ echo "Last-Translator: Név <név@domain.org>" | sed 's/.*ranslator: \(.*\) <\(.*\)>.*/\1 \2/'
Név név@domain.org[/code:1:15677c1233]
Szerintem Te ezt a parancsot írtad be:
[code:1:15677c1233] $ echo "Last-Translator: Név <név@domain.org>\n" | sed 's/^.*<\(.*\)>/\1/'
név@domain.org\n[/code:1:15677c1233]
Ezzel az a baj, hogy az echo-nak meg kell adni egy -e paramétert, hogy az újsor (\n), backspace (\b), stb. karaktereket átalakítsa.
[code:1:15677c1233]-e enable interpretation of the backslash-escaped characters listed
below[/code:1:15677c1233]
ui: Kezdem megszeretni ezt a sed-et...
- A hozzászóláshoz be kell jelentkezni
[quote:a96d4866eb="lacipac"]
[code:1:a96d4866eb]$ echo "Last-Translator: Név <név@domain.org>" | sed 's/.*ranslator: \(.*\) <\(.*\)>.*/\1 \2/'
Név név@domain.org[/code:1:a96d4866eb]
ui: Kezdem megszeretni ezt a sed-et...
hagy tanuljak en is egy kicsit:
amikor az s-sel \1re meg \2re csereled az mit jelent :?:
- A hozzászóláshoz be kell jelentkezni
Én azt kombináltam ki hogy azok amiket elsőnek és másodiknak \( és \) közé raktál.
- A hozzászóláshoz be kell jelentkezni
je, telleg. hat ez allati :D
- A hozzászóláshoz be kell jelentkezni
[quote:ae328352e7="lacipac"]dvornikl: Mivel a kettő gondolom együtt kell ("Addig eljutottam, hogy grep "Last-Translator" vmi.po | sed 's/.*ranslator: \(.*\) <.*>.*/\1/' parancs kiadja nekem a fordító nevét (Név). Most már csak az e-mail cím kellene."), megbarátkoztam a reguláris kifejezésekkel, és erre jutottam:
[code:1:ae328352e7]$ echo "Last-Translator: Név <név@domain.org>" | sed 's/.*ranslator: \(.*\) <\(.*\)>.*/\1 \2/'
Név név@domain.org[/code:1:ae328352e7]
Zseni vagy. Eszembe nem jutott volna a \2.
[quote:ae328352e7="lacipac"]Szerintem Te ezt a parancsot írtad be:
[code:1:ae328352e7] $ echo "Last-Translator: Név <név@domain.org>\n" | sed 's/^.*<\(.*\)>/\1/'[/code:1:ae328352e7]
Nem, én a grep-pel csináltam:
[code:1:ae328352e7]$ grep "Last-Translator" vmi.po | sed "s,^.*<\(.*\)>,\1,"[/code:1:ae328352e7]
A \2 beírásával viszont a grep-pel is működik.
- A hozzászóláshoz be kell jelentkezni