Newsgroup: it.comp.os.linux.sys
Titolo: awk tip

scusate, ci sto rimettendo la serenità:
 
 
ho una stringa di tipo
"ciao1 ciao2 ciao3 ciao4"
 
awk '{ print $1 }' mi restituisce ciao1... ok
awk '{ print $2 }' mi restituisce ciao2... ok
 
come fare per dire "tutto ciò che sta prima di $2" oppure "tutto ciò che 
sta dopo di $3" ?
 
 
sembra banale, e lo è sicuramente, ma non trovo un kaiser in giro! :)

 sta dopo di $3" ?
 
perche' non usi sed ?
 
cat testo.txt | sed -e 's/.* ciao2 //'
 
-- 
Never try to teach a pig to sing.
It wastes your time and annoys the pig.

 che sta dopo di $3" ?
 
if{NR>=3){
   if(split($0,A,$3)==2) {print "prima " A[1]; print "dopo " A[2]}
   else{print $3 " ricorre più di una volta nel record " NR}
} else {print "il record " NR " contiene meno di 3 campi"}
 
ti lascio il piacere di parametrizzare il numero del campo su cui
splittare

 if{NR>=3){
 
  if(NF>=3){
 
ooops!
-- 
"Lord, what fools these mortals be!"


stampo tutto ciò che sta prima di $2 (beh, $2 è un po' sciocco, prima di 
$2 ci può essere solo $1... comunque, è applicabile in linea generale):
 
awk '{for (i=0; i<2; i++) print $i;}'
 
tutto ciò che sta dopo $3:
 
awk '{for (i=4; i<=NF; i++) print $i;}'
 
se non vuoi andare a capo, usa printf per formattare l'output.
 
-- 
Massimo Bacilieri AKA Crononauta

perdonatemi...
 
altra info banale :)
 
 
cat pippo.txt
 
pippo
pluto
topolino
 
 
 
ora, se volessi dire a sed "quando leggi pluto, inserisci una nuova 
linea chiamata ciccio"
 
di tipo
 
pippo
pluto
ciccio
topolino
 
 
ci sto impazzendo! :院
 

 altra info banale [...]
 
% sed /pluto/a"ciccio" << END
pippo
pluto
topolino
END
pippo
pluto
ciccio
topolino
% 

 topolino
 
sed '/pluto/a\ciccio' pippo.txt
 
-- 
           |Save our planet!
    Ciao   |Save wildlife!
   roberto |For your E-MAIL use ONLY recycled Bytes  !!
           |roberto poggi   
rpo...@softhome.net
 


Facebook: Massimo Bacilieri


 
perfetto, grazie a tutti! :)

altra richiestuccia...
 
./comando.sh ciao1 pippo2 ciccio3
 
echo $2 = pippo2
 
ok...
 
- come faccio a dire tutto ciò che viene dopo $2 ? una specie di $2*
- come faccio a dire $10 (ossia la decima parola)? oltre $9 non vado.. 
ho provato con $10, con $1\0, con $[10], con ${10}... nada !!

 ho provato con $10, con $1\0, con $[10], con ${10}... nada !!
 
Sei sicuro di aver definito almeno dieci parametri?

 vado.. ho provato con $10, con $1\0, con $[10], con ${10}... nada !!
 
ma sei sicuro? 
 
% echo '1 2 3 4 5 6 7 8 9 a b c d e f' | mawk '{print $12}'
c
% echo '1 2 3 4 5 6 7 8 9 a b c d e f' | gawk '{print $12}'
c
% 


 
 
Spero si tratti di un troll, ultimamente se ne vedono svariati. Perchè 
altrimenti se pensi che una richiesta simile, inerente ad un subtopic 
contenente delle istruzioni basilari bash, possa autorizzarti ad 
esprimetri in questi termini, probabilmente hai qualche problema di 
socializzazione che ti consiglio di curare con esperti del settore.
 
Non è mia intenzione dar adito ad ulteriori sterili polemiche, non mi 
conosci, non sei autorizzato ad esprimerti in questa maniera. Se sei 
sociopatico o hai problemi sociali non è affar mio e spetta a te curarti.
 
La mia email è poiuuuu gmail, io non ho problemi a lasciarti il mio 
numero di telefono e a parlarti di persona. Un monitor spesso rende 
leoni e fieri delle proprie anomalie socio-comportamentali.
 

 $2 la variabile della shell o $2 il secondo campo di awk?
 
oh madonna, hai completamente cambiato il discorso mantenendo un
vecchio subject che parla di awk (che č il mio hobby-horse)
 
come non detto

 mi sembra che  gią hai avuto delle risposte in merito
 
no giacomo, parlo delle istruzioni impartite da un comando bash, non da 
un echo semplice. lģ funziona.
 
quando invece avvii uno script bash con dei parametri che seguono, lo 
script stesso li prende come
 
$1 $2 $3 etc..
 
perņ il $10 non funziona.
 
non so se mi sono spiegato, in effetti ammetto di non aver reso l'idea!
 


 
si vero, perchč nello stesso script con awk parso $1 e poi devo prendere 
$2, $3, $4... etc..
 
:)
 
 

 però il $10 non funziona.
 
Ma funziona shift.
 
poggir@poggirpc:~/test$ cat shi
echo $2
echo $1
shift
echo $1
poggir@poggirpc:~/test$ ./shi uno due tre
due
uno
due
poggir@poggirpc:~/test$


 bla bla bla.
 
 
Plonkami. io ci guadagno.