Εμφάνιση ενός μόνο μηνύματος
  #2  
Παλιά 04-10-10, 01:48
Το avatar του χρήστη Morgul
Morgul Ο χρήστης Morgul δεν είναι συνδεδεμένος
Άσωτος διαχειριστής
 

Τελευταία φορά Online: 26-03-22 20:02
Φύλο: Δεν έχω αποφασίσει ακόμα
Αρχική Δημοσίευση από Gildor Εμφάνιση μηνυμάτων
Υπαρχει καποια εντολή ή φίλτρο το οποίο απομονώνει ενα αριθμο (και δεκαδικο) απο ενα string?

Για παραδειγμα στο cp --version με επιστροφή "cp (GNU coreutils) 7.4" να μπορεσει να κραταει μονο το "7.4"
Υπάρχουν αρκετοί τρόποι να το κάνεις αυτό. Δεν ξέρω κάποιον που γίνεται σε αμιγές bash, αλλά αν αναφέρεσαι γενικά σε shell και σχετικές εντολές:

Κώδικας:
echo 'cp (GNU coreutils) 7.4' |
sed -e 's/^[^0-9.+-]\+//' -e 's/[^0-9.+-]\+$//'
Αυτό δουλεύει μια χαρά για έναν αριθμό ανά γραμμή. Δε δουλεύει καλά για πολλαπλούς αριθμούς ανά γραμμή, αλλά μπορείς να το προσαρμόσεις.

Αν επιτρέπονται οι pythonικές ατασθαλίες, να μια συνταγή που δουλεύει για όσους αριθμούς θες (απλά διαγράφει ό,τι δεν είναι αριθμός και σου σερβίρει όλους τους αριθμούς του αρχείου που του δίνεις σε μία γραμμή, χωρισμένους με κενά.

Κώδικας:
echo 'cp (GNU coreutils) 7.4' |
python -c 'import sys, re; print " ".join(re.findall("[0-9+.-]+",sys.stdin.read()))'
__________________
www.bedroomlan.org
Απάντηση με παράθεση