Το Στέκι των Πληροφορικών

Γενικά => Τεχνική υποστήριξη => Linux => Μήνυμα ξεκίνησε από: poursali στις 11 Σεπ 2012, 10:17:44 ΠΜ

Τίτλος: regular expressions και αντικατάσταση κειμένου
Αποστολή από: poursali στις 11 Σεπ 2012, 10:17:44 ΠΜ
ποιος είναι ο καλύτερος τρόπος για εύρεση και αντικατάσταση κειμένου μέσα σε αρχείο βασιζόμενος σε κανονικές εκφράσεις;

μέχρι στιγμής έχω αυτό:
Παράθεση
grep [[:blank:]][0-9][0-9][0-9][[:blank:]][0-9][0-9][[:blank:]] data.csv

με sed μπορεί να γίνει αντικατάσταση και πως;

αυτό που θέλω είναι να βγάλω το κενό μεταξύ 3ου και 4ου ψηφίου

και γενικά τι είναι καλύτερο σε αυτές τις περιπτώσεις; grep? sed? awk?
Τίτλος: Απ: regular expressions και αντικατάσταση κειμένου
Αποστολή από: alkisg στις 11 Σεπ 2012, 11:37:00 ΠΜ
Η grep είναι μόνο για εύρεση, δεν κάνει για αντικατάσταση.
Η awk κάνει αντικατάσταση, αλλά δεν γράφει (εύκολα) στο ίδιο αρχείο.
Η sed είναι ακριβώς γι' αυτή τη δουλειά.
Βέβαια, σίγουρα θα υπάρχουν και editors με τους οποίους μπορείς να κάνεις την ίδια δουλειά με γραφικό τρόπο και όχι από κονσόλα (αν και δεν έχω ψάξει).

Παράδειγμα για ξεκίνημα:
Κώδικας (shell) [Επιλογή]

sed 's/\( [0-9]*\) \([0-9]*.*\)/\1\2/' -i data.csv


Πρώτα δοκίμασε χωρίς το -i, ώστε να βλέπεις το output στην οθόνη χωρίς να σου πειράζει το αρχείο, και όταν είναι ΟΚ βάλε το -i για να κάνει τις αλλαγές στο αρχείο.