regular expressions και αντικατάσταση κειμένου

Ξεκίνησε από poursali, 11 Σεπ 2012, 10:17:44 ΠΜ

« προηγούμενο - επόμενο »

poursali

ποιος είναι ο καλύτερος τρόπος για εύρεση και αντικατάσταση κειμένου μέσα σε αρχείο βασιζόμενος σε κανονικές εκφράσεις;

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

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

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

και γενικά τι είναι καλύτερο σε αυτές τις περιπτώσεις; grep? sed? awk?
μετρον αριστον
είμαι τζαμπατζής, χρησιμοποιώ λίνουξ

alkisg

Η grep είναι μόνο για εύρεση, δεν κάνει για αντικατάσταση.
Η awk κάνει αντικατάσταση, αλλά δεν γράφει (εύκολα) στο ίδιο αρχείο.
Η sed είναι ακριβώς γι' αυτή τη δουλειά.
Βέβαια, σίγουρα θα υπάρχουν και editors με τους οποίους μπορείς να κάνεις την ίδια δουλειά με γραφικό τρόπο και όχι από κονσόλα (αν και δεν έχω ψάξει).

Παράδειγμα για ξεκίνημα:
Κώδικας: shell
sed 's/\( [0-9]*\) \([0-9]*.*\)/\1\2/' -i data.csv


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