SED

Κάνει αντικαταστάσεις strings σε ένα αρχείο. Η ανάλυση της εντολής αυτής γίνεται μέσω παραδειγμάτων γιατί τα παραδείγματα βοηθούν περισσότερο στην κατανόηση βασικών και χρήσιμων λειτουργιών της εντολής.

sed -e '1,5d' file1

Διαγράφει τις 5 πρώτες γραμμές του file1 και εμφανίζει τις υπόλοιπες.

ΠΑΡΑΔΕΙΓΜΑ
file1
Binst           555-6235
Dickerson       555-1842
Eisner          555-1234
Green           555-2240
Hrarii          555-0256
Janatha         555-7358
Lewis           555-3237
Takata          555-5341
Wozni           555-1234
ΑΠΟΤΕΛΕΣΜΑ
Janatha         555-7358
Lewis           555-3237
Takata          555-5341
Wozni           555-1234
sed -e '6,$d' file1

Διαγράφει τις γραμμές του file1 από την 6η μέχρι την τελευταία και εμφανίζει τις υπόλοιπες (δηλαδή τις πρώτες 5)

ΑΠΟΤΕΛΕΣΜΑ
Binst           555-6235
Dickerson       555-1842
Eisner          555-1234
Green           555-2240
Hrarii          555-0256
sed -n -e '1,3p' file1

Εμφανίζει τις 3 πρώτες γραμμές του file1

ΑΠΟΤΕΛΕΣΜΑ
Binst           555-6235
Dickerson       555-1842
Eisner          555-1234
sed -e '1,3p' file1

Εμφανίζει όλες τις γραμμές του file1, απλώς τις πρώτες τρεις τις εμφανίζει από δύο φορές την κάθε μία.

ΑΠΟΤΕΛΕΣΜΑ
Binst           555-6235
Binst           555-6235
Dickerson       555-1842
Dickerson       555-1842
Eisner          555-1234
Eisner          555-1234
sed -n -e 'l' file1

Εμφανίζει το file1 ολόκληρο αλλά όπως θα το έβλεπε ένας κειμενογράφος. Στο τέλος κάθε γραμμής δηλαδή υπάρχει ο χαρακτήρας $. Το tab αν έχει πατηθεί ανάμεσα σε λέξεις εμφανίζεται ως \t κοκ.

ΑΠΟΤΕΛΕΣΜΑ
Binst\t\t555-6235\r$
Dickerson\t555-1842\r$
Eisner\t\t555-1234\r$
Green\t\t555-2240\r$
Hrarii\t\t555-0256\r$
Janatha\t\t555-7358\r$
Lewis\t\t555-3237\r$
Takata\t\t555-5341\r$
Wozni\t\t555-1234\r$
sed -e '5q' file1

Εμφανίζονται οι πέντε πρώτες γραμμές του file1.

ΑΠΟΤΕΛΕΣΜΑ
Binst           555-6235
Dickerson       555-1842
Eisner          555-1234
Green           555-2240
Hrarii          555-0256
sed -e '1,3d' -e '5,6d' file1

Εμφανίζει όλες τις γραμμές του file1 εκτός από τις 1-3 και 5-6.

ΑΠΟΤΕΛΕΣΜΑ
Green           555-2240
Lewis           555-3237
Takata          555-5341
Wozni           555-1234
ΠΡΟΣΟΧΗ! Το -e χρησιμοποιείται για να μπορεί κανείς να γράψει παραπάνω από μία εντολές sed μαζί. Αυτό σημαίνει ότι το -e ήταν απαραίτητο μόνο στην τελευταία εντολή ενω στις υπόλοιπες θα μπορούσε να έχει παραληφθεί.

sed -e '/banana/d' file1

Εμφανίζει όλες τις γραμμές του file1 οι οποίες δεν περιέχουν το banana ως string μέσα τους.

ΠΑΡΑΔΕΙΓΜΑ
file1
cherwey
  cherry
banana
orange
Persimmon
apple
%%banana
apple
ORANGE
ΑΠΟΤΕΛΕΣΜΑ
cherwey
  cherry
orange
Persimmon
apple
apple
ORANGE
sed -n -e '/banana/d' -e '/orange/d' file1 Δεν εμφανίζει τις γραμμές που περιέχουν το string banana αλλά μόνο αυτές που έχουν το string orange. Αν μια γραμμή περιέχει και banana και orange τότε αυτή δεν εμφανίζεται. Το -n δηλαδή χρησιμοποιείται για να εμφανίζονται μόνο οι γραμμές στις οποίες έχει γίνει κάποια αλλαγή και όχι οι υπόλοιπες.

ΠΑΡΑΔΕΙΓΜΑ
file1
banana
orange
Persimmon
apple
%%banana
apple
ORANGE
banana orange
orange banana
ΑΠΟΤΕΛΕΣΜΑ
orange
sed -e 's/banana/carot/g' file1

Γίνεται αντικατάσταση του banana με το carot στο file1.

ΑΠΟΤΕΛΕΣΜΑ
carot
orange
Persimmon
apple
%%carot
apple
ORANGE
carot orange
orange carot
sed -e '/apple/q' file1

Εμφανίζει όλες τις γραμμές του file1 μέχρι την πρώτη εμφάνιση του string apple.

ΑΠΟΤΕΛΕΣΜΑ
banana
orange
Persimmon
apple
sed -n '/Persimmon/,/orange/p' file1

Εμφανίζει όλο το κείμενο του file1 το οποίο περιέχεται μεταξύ της πρώτης εμφάνισης του string Persimmon και της πρώτης εμφάνισης του string orange μετά το Persimmon.

ΑΠΟΤΕΛΕΣΜΑ
Persimmon
apple
%%banana
apple
ORANGE
banana orange
sed -e 's/[A-Z]/juice/g' file1

Αντικαθιστά κάθε κεφαλαίο λατινικό γράμμα του file1 με τη λέξη juice.

ΑΠΟΤΕΛΕΣΜΑ
banana
orange
juiceersimmon
apple
%%banana
apple
juicejuicejuicejuicejuicejuice
banana orange
orange banana
sed -e 's/^[aeiou]/juice/g' file1

Αντικαθιστά τον πρώτο χαρακτήρα κάθε γραμμής του file1, η οποία ξεκινά με πεζό λατινικό φωνήεν, με τη λέξη juice.

ΑΠΟΤΕΛΕΣΜΑ
banana
juicerange
Persimmon
juicepple
%%banana
juicepple
ORANGE
banana orange
juicerange banana
sed -e 's/^[^aeiou]/juice/g' file1

Αντικαθιστά τον πρώτο χαρακτήρα κάθε γραμμής του file1, η οποία δεν ξεκινά με πεζό λατινικό φωνήεν, με τη λέξη juice.

ΑΠΟΤΕΛΕΣΜΑ
juiceanana
orange
juiceersimmon
apple
juice%banana
apple
juiceRANGE
juiceanana orange
orange banana
sed 's/^/     /g' file1

Στην αρχή κάθε γραμμής του file1 προσθέτει πέντε κενά, δηλαδή κάθε γραμμή του file1 ξεκινά μετατοπισμένη κατά πέντε κενά προς τα δεξιά.

ΑΠΟΤΕΛΕΣΜΑ
     banana
     orange
     Persimmon
     apple
     %%banana
     apple
     ORANGE
     banana orange
     orange banana


Επιστροφή