PDA

Visualizza la versione completa : sed e awk


osvi
28-05-2005, 18:18
salve
ho un file di circa 20kb, tutto su una riga unica

è possibile tramite sed e/o awk prendere solo un pezzo?

per esempio: <a><c><d>xx</d></c></a>

come faccio a dirgli "taglia prima di <d> e dopo di </d>" ? :fagiano:

osvi
28-05-2005, 18:19
ps sto già cercando tra pagine man e howto ma non trovo nulla che possa andare :cry:

Guglie
28-05-2005, 18:28
sed -e ''s/'<a>[b]<c><d>'/''/g'' file > file2
sed -e ''s/'<\/d><\/c><\/b><\/a>'/''/g'' file2 > file3
sicuramente però ci sarà un modo più elegante per farlo :)

osvi
28-05-2005, 18:31
ah mi ero scordato di dire che le parti precedenti a <d> e successive a </d> sono dinamiche :(

Guglie
28-05-2005, 18:36
Originariamente inviato da osvi
ah mi ero scordato di dire che le parti precedenti a <d> e successive a </d> sono dinamiche :(
cosa intendi con dinamiche?

osvi
28-05-2005, 18:47
è un file che cambia da utente a utente
qualcuno lo può avere in uno modo qualcuno in'altro
per questo mi serviva tipo un carattere jolly :cry:

Guglie
28-05-2005, 18:58
Originariamente inviato da osvi
è un file che cambia da utente a utente
qualcuno lo può avere in uno modo qualcuno in'altro
per questo mi serviva tipo un carattere jolly :cry:
ok ma allora fai degli esempi di diverti files possibili, ci sarà una regola per stabilire i caratteri da eliminare

osvi
28-05-2005, 19:21
no no tutta la parte precedente a (come nell'esempio) <d> può cambiare, non c'è uno standard :( così come quella dopo..

mi serviva una cosa come "taglia '%<d>'" e "taglia '%</d>'"

osvi
29-05-2005, 01:19
nessuno? :cry:

cacao74
29-05-2005, 01:36
Originariamente inviato da osvi
nessuno? :cry:


[sergio@winnie ~/tmp]$ cat file
<a><c><d>xx</d></c></a>
[sergio@winnie ~/tmp]$ sed -e 's/^.*\(<d>.*<\/d>\).*$/\1/' file
<d>xx</d>



e, nel caso avessi capito male:


[sergio@winnie ~/tmp]$ cat file
<a><c><d>xx</d></c></a>
[sergio@winnie ~/tmp]$ sed -e 's/^.*<d>\(.*\)<\/d>.*$/\1/' file
xx



notte... :sonno:

Loading