Αρχική Δημοσίευση από 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()))'