Portál AbcLinuxu, 26. dubna 2024 19:55


Dotaz: vytazeni casti ze scriptu do pole

20.12.2011 15:15 hates
vytazeni casti ze scriptu do pole
Přečteno: 231×
Odpovědět | Admin
Zdravim,

Tak jsem tu zase s problemem a to takovym ze potrebuji vytahnout ze souboru urcite veci.

mam soubor ve tvaru
root@dns1-dnssec keys]# cat Kdomena.tld.+005+54496.key
; This is a key-signing key, keyid 54496, for domena.tld.
; Created: 20111220141114 (Tue Dec 20 15:11:14 2011)
; Publish: 20111220141114 (Tue Dec 20 15:11:14 2011)
; Activate: 20111220141114 (Tue Dec 20 15:11:14 2011)
domena.tld. IN DNSKEY 257 3 5 AwEAAdiroU8MfRedZjmdvDYafboC7SyVHFlFPMr0lpJvhor1Hc4rHEH3 K3etusUPem0B2q6+KPAvg71j6FctjWL7L/diptQdY5GFjdqEHqKuyYg8 enLaQHC+DJXiD/pOF7hVAwGpq9W9d1pLWLM/AVFRmMWD98dIE8Hn5us4 vNUCBeMytuaxBW+Gje3rllwuUI836JXqe09BVhgPVuQSr45eWWk=
a ja potrebuji vytahnout nejlepe do jedne promenne hodnotu

257 3 5 'AwEAAdiroU8MfRedZjmdvDYafboC7SyVHFlFPMr0lpJvhor1Hc4rHEH3 K3etusUPem0B2q6+KPAvg71j6FctjWL7L/diptQdY5GFjdqEHqKuyYg8 enLaQHC+DJXiD/pOF7hVAwGpq9W9d1pLWLM/AVFRmMWD98dIE8Hn5us4 vNUCBeMytuaxBW+Gje3rllwuUI836JXqe09BVhgPVuQSr45eWWk='
ten retezec by byl tak jak je pouze klic musi byt uvozen apostrofy. Nejlepsi na to bude pravdepodobne sed ale jak napsat ten regexp.

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

20.12.2011 15:18 hates
Rozbalit Rozbalit vše Re: vytazeni casti ze scriptu do pole
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zatim jsem provedl neco takoveho
cat Kdomena.tld.+005+54496.key | grep -e "DNSKEY" | sed -e 's/^.*DNSKEY \(.*\)/\1/p;d'
a jeste potrebuji ten klic vlozit do apostrofu
20.12.2011 15:20 hates
Rozbalit Rozbalit vše Re: vytazeni casti ze scriptu do pole
grep je tam na (_!_) fuj
20.12.2011 15:36 hates
Rozbalit Rozbalit vše Re: vytazeni casti ze scriptu do pole
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak se povedlo
cat Kdomena.tld.+005+54496.key | grep -e "DNSKEY" | sed -e "s/^.*DNSKEY \(.*\)/\1/p; s/\([0-9 ]*\) \(.*\)$/\1 '\2'/p;d"
20.12.2011 15:39 CET
Rozbalit Rozbalit vše Re: vytazeni casti ze scriptu do pole
muzes ten grep odstranit, nechat jenom sed s prepinacem -n a pak davas s///p a tim to tisknes. pak je zbytecne i to "d" v sedu.

no a nemusis cat soubor, ale rovnou sed -n -e 's/.../.../p;' soubor. Ale jak jsem napsal, ja bych to resil perlem:-)
21.12.2011 06:32 Ash | skóre: 53
Rozbalit Rozbalit vše Re: vytazeni casti ze scriptu do pole
Dobrý nápad s tím dvojím zpracováním, po mírné úpravě:
sed -n -e "s/^.*DNSKEY \(.*\)/\1/;T;s/\([[:digit:] ]\+\) \(.*\)$/\1 '\2'/p" Kdomena.tld.+005+54496.key
20.12.2011 15:37 CET
Rozbalit Rozbalit vše Re: vytazeni casti ze scriptu do pole
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tam jsou opravu mezery v tom poslednim textu?

Ja bych dal export VAR="$( perl -aF'/\s+/' -ne 'print sprintf("%s %s %s \x27%s\x27\n",@F[3-5],join(" ",@F[6-$#F])) if $F[2] eq "DNSKEY";' FILE )"

Ano, sedem nebo awkem by to slo taky, ale proc se namahat, kdyz to perl zvladne hezky jednoduse.
20.12.2011 15:43 hates
Rozbalit Rozbalit vše Re: vytazeni casti ze scriptu do pole
ano mezery tam prave jsou
wamba avatar 20.12.2011 19:38 wamba | skóre: 38 | blog: wamba
Rozbalit Rozbalit vše Re: vytazeni casti ze scriptu do pole
Popřípadě v Perl-u takhle

perl -nE '$qoute="\x27";chomp;if (s/.*DNSKEY\s+(\d+\s+\d+\s+\d+\s+)//){say $1,$qoute,$_,$qoute}'
This would have been so hard to fix when you don't know that there is in fact an easy fix.
20.12.2011 21:13 Kit
Rozbalit Rozbalit vše Re: vytazeni casti ze scriptu do pole
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tohle mi funguje:
awk '/^[^;].*DNSKEY/ {print $4,$5,$6,"\47" $7,$8,$9,$10 "\47"}' <Kdomena.tld.+005+54496.key

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.