Portál AbcLinuxu, 12. května 2025 05:58

Dotaz: awk FS jako re

6.8.2008 15:41 Terka | skóre: 13
awk FS jako re
Přečteno: 387×
Odpovědět | Admin
mam datum
25.03.2005 12:32:15 6
chci prohazet den, rok, mesic...  pomoci AWK tj. FS ma byt dvojtecka, mezera, tecka

cat datum|awk ' FS=":|\\.| " {print $3" "$2" "$1" "$4}'

proc je nutno tecku eskejpovat 2x?
\\. 
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

6.8.2008 16:06 Messa | skóre: 39 | blog: Messa
Rozbalit Rozbalit vše Re: awk FS jako re
Odpovědět | | Sbalit | Link | Blokovat | Admin
Když to zkusím:
$ echo 1.2 | awk 'FS="\." {print $1}'
awk: warning: escape sequence `\.' treated as plain `.'
1.2
Vypadá to, že i awk sám dělá nějaké unescapování vstupu a až pak výsledek začne zpracovávat např. jako regulární výraz.
7.8.2008 12:14 Jan Šimák | skóre: 37 | Hradec Králové
Rozbalit Rozbalit vše Re: awk FS jako re
Odpovědět | | Sbalit | Link | Blokovat | Admin
Výše uvedený příkaz vám funguje a vrací to co požadujete? Konkrétně mě vrátí toto: 6 12:32:15 25.03.2005
#!/usr/bin/gawk -f
BEGIN {FS = "."}
{
den = $1 ; mesic = $2 ; rok = substr($3,0,4) ; zbytek = substr($3,6)
print rok mesic den, zbytek
}
12.8.2008 16:40 Terka | skóre: 13
Rozbalit Rozbalit vše Re: awk FS jako re
jo ted na to koukam je to tak.
12.8.2008 04:47 luky
Rozbalit Rozbalit vše Re: awk FS jako re
Odpovědět | | Sbalit | Link | Blokovat | Admin
awk -F '[.: ]' '{print $3" "$2" "$1" "$4}'
12.8.2008 17:37 Terka | skóre: 13
Rozbalit Rozbalit vše Re: awk FS jako re
dobre, otazka zni, zda tam jde dat libovolny RE, nejen vycet znaku

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.