Προς το περιεχόμενο

προγραμματισμός bash shell script curl / grep / sed


toyotaki

Προτεινόμενες αναρτήσεις

Έχω αυτό το site http://uk.search.yahoo.com/search όπου πρέπει να δώσω σαν είσοδο τρεις λέξεις και θέλω να απομονώσω τον αριθμό των αποτελεσμάτων και να τον αναθέσω σε μία μεαβλητή. Προσπάθησα να χρησιμοποιήσω την curl ως εξής:

>pw1w2e=`curl -s "http://uk.search.yahoo.com/search?q=$w1+$w2+NEAR+e" | grep resultCount | sed 's:^.*<strong id="resultCount">::' | sed 's:</strong> results.*$::'`

Το αποτέλεσμα που ψάχνω δίνεται από το site σε αυτό το σημείο

><span class="count"><strong id="resultCount">2,980,000</strong> results for</span>

Το πρόβλημά μου είναι ότι δε μου απομονώνει σε όλες τις περιπτώσεις το νούμερο. Στις περιπτώσεις που δε δουλεύει σωστά μου εμφανίζει το νούμερο και όλο τον κώδικα της σελίδας από το νούμερο και μετά. Φαίνεται να δουλεύει σωστά μέχρι πριν το grep resultCount.

Κάνω κάπου λάθος; Υπάρχει άλλος τρόπος για να απομονώσω ή να υπολογίσω εκ νέου το νούμερο που θέλω;

pw1w2e: μεταβλητή μέσα σε bash shell script που θέλω να αποθηκεύεται το νούμερο των αποτελεσμάτων.

Παραδείγματα συνδιασμών λέξεων που χρησιμοποιώ:

w1: good, w2: paper, e:excellent

w1: good, w2: paper, e:poor

w1: first, w2: submission, e:excellent

w1: first, w2: submission, e:poor

 

Ευχαριστώ εκ των προτέρων

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αντι για την sed για δοκιμασε κάτι αντίστοιχο με awk:

 

>
foo='<span class="count"><strong id="resultCount">2,980,000</strong> results for</span>'
echo $foo | awk -F'<strong id="resultCount">' '{ print $2 }' | awk -F'</strong>' '{ print $1 }'

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...