Πώς να εισαγάγετε μια γραμμή μετά τον αγώνα χρησιμοποιώντας το `sed`;

How Insert Line After Match Using Sed



Μία από τις χρήσιμες και ισχυρές εντολές του Linux είναι η εντολή sed. Αυτή η εντολή χρησιμοποιείται για την εκτέλεση διαφορετικών τύπων εργασιών στο Linux, όπως εισαγωγή, ενημέρωση και διαγραφή συγκεκριμένου κειμένου ή γραμμής με βάση την αντιστοίχιση. Μπορείτε να εισαγάγετε ένα κείμενο σε μια συμβολοσειρά ή ένα αρχείο με διαφορετικούς τρόπους χρησιμοποιώντας την εντολή sed.

Ο τρόπος εισαγωγής μιας γραμμής μετά την εύρεση αντιστοίχισης σε μια συμβολοσειρά ή μια γραμμή παρουσιάζεται σε αυτό το σεμινάριο.







Εισαγάγετε μια γραμμή στη συμβολοσειρά

Μια νέα γραμμή μπορεί να εισαχθεί μετά από οποιαδήποτε τιμή συμβολοσειράς χρησιμοποιώντας την εντολή sed εάν το μοτίβο που ορίζεται στην εντολή ταιριάζει με οποιοδήποτε μέρος της τιμής συμβολοσειράς.



Το ακόλουθο παράδειγμα δείχνει πώς μπορεί να προστεθεί μια νέα γραμμή μετά από μια τιμή συμβολοσειράς, εάν υπάρχει μια συγκεκριμένη συμβολοσειρά οπουδήποτε στην τιμή της συμβολοσειράς.



Παράδειγμα-1: Εισαγάγετε μια γραμμή σε μια συμβολοσειρά μετά την εύρεση αντιστοίχισης

Η ακόλουθη εντολή θα αναζητήσει inng στη συμβολοσειρά, μου αρέσει ο προγραμματισμός και μια γραμμή κειμένου, Σας αρέσει ο προγραμματισμός; θα εισαχθεί μετά τη συμβολοσειρά εάν υπάρχει η συμβολοσειρά αναζήτησης.





Εδώ, ο χαρακτήρας & χρησιμοποιείται για την εισαγωγή της γραμμής μετά τη συμβολοσειρά.

$πέταξε έξω 'Μου αρέσει ο προγραμματισμός.' | sed 's / inng / & Σας αρέσει ο προγραμματισμός; /'

Η ακόλουθη έξοδος δείχνει ότι το inng δεν υπάρχει στη συμβολοσειρά και καμία γραμμή δεν εισάγεται μετά τη συμβολοσειρά.




Η ακόλουθη εντολή θα πραγματοποιήσει αναζήτηση. στη συμβολοσειρά, μου αρέσει ο προγραμματισμός και υπάρχει στη συμβολοσειρά.

$πέταξε έξω 'Μου αρέσει ο προγραμματισμός.' | sed 's/ing ./& Σας αρέσει ο προγραμματισμός;/'

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

Εισαγάγετε μια γραμμή σε ένα αρχείο

Υπάρχουν δύο τρόποι για να εισαγάγετε μια γραμμή αφού βρεθεί μια αντιστοίχιση σε ένα αρχείο που αναφέρεται παρακάτω. Όταν η εντολή sed χρησιμοποιείται χωρίς την επιλογή -i, τότε το περιεχόμενο του αρχείου θα παραμείνει αμετάβλητο και η έξοδος θα εμφανίσει το περιεχόμενο του αρχείου με την εισαγόμενη νέα γραμμή. Πρέπει να χρησιμοποιήσετε την επιλογή -i με την εντολή sed για να εισαγάγετε μόνιμα τη νέα γραμμή στο αρχείο εάν υπάρχει το μοτίβο αντιστοίχισης στο αρχείο.

Α. Χρησιμοποιώντας ένα στην εντολή sed

Το a μπορεί να χρησιμοποιηθεί στο μοτίβο αναζήτησης του sed για να προσθέσει μία ή περισσότερες γραμμές σε ένα αρχείο μετά τη γραμμή όπου ταιριάζει το μοτίβο αναζήτησης ή μετά από έναν συγκεκριμένο αριθμό γραμμής.

Β. Χρησιμοποιώντας το i στην εντολή sed

Το i μπορεί να χρησιμοποιηθεί στο μοτίβο αναζήτησης της εντολής sed για να εισαγάγετε μία ή περισσότερες γραμμές σε ένα αρχείο πριν από τη γραμμή όπου ταιριάζει το μοτίβο αναζήτησης.

Εισαγάγετε γραμμές σε ένα αρχείο με βάση το μοτίβο:

Δημιουργήστε ένα αρχείο κειμένου με οριοθέτηση καρτέλας με όνομα products.txt με το ακόλουθο περιεχόμενο για να εμφανίσετε τις χρήσεις της παραπάνω σημαίας στην εντολή sed.

products.txt

Όνομα ταυτότητας

01 Κρέμα σαντιγί

02 σκόνη κακάο

03 Ζάχαρη

04 Αυγό

05 Αλεύρι

Παράδειγμα-2: Εισαγάγετε μια γραμμή μετά από έναν συγκεκριμένο αριθμό γραμμής χρησιμοποιώντας το a

Οι ακόλουθες εντολές δείχνουν πώς μπορεί να προστεθεί μια νέα γραμμή, μετά από έναν συγκεκριμένο αριθμό γραμμής του αρχείου products.txt, με βάση το μοτίβο που χρησιμοποιείται στην εντολή sed.

Εδώ, η πρώτη εντολή θα εμφανίσει το υπάρχον περιεχόμενο του αρχείου. Η εντολή sed θα προσθέσει το κείμενο, b01 μπέικιν πάουντερ, μετά τις δύο πρώτες γραμμές του αρχείου. Η τελευταία εντολή χρησιμοποιείται για να ελέγξει εάν το περιεχόμενο του αρχείου έχει αλλάξει ή όχι.

$Γάταproducts.txt

$sed '2 a b01 tΜπουκάνισμα σε σκόνη'products.txt

$Γάταproducts.txt

Η ακόλουθη έξοδος θα εμφανιστεί μετά την εκτέλεση της παραπάνω εντολής.

Παράδειγμα-3: Εισαγάγετε μια γραμμή μετά την τελευταία γραμμή χρησιμοποιώντας το a

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

$Γάταproducts.txt

$sed '$ a b01 tΜπουίνια σε σκόνη'products.txt

$Γάταproducts.txt

Η ακόλουθη έξοδος θα εμφανιστεί μετά την εκτέλεση της παραπάνω εντολής.

Παράδειγμα-4: Εισαγάγετε μια γραμμή οπουδήποτε στο αρχείο αφού αντιστοιχίσετε ένα μοτίβο χρησιμοποιώντας το a

Η ακόλουθη εντολή sed δείχνει πώς μπορεί να προστεθεί μια νέα γραμμή οπουδήποτε στο αρχείο με βάση το μοτίβο αντιστοίχισης. Το μοτίβο που χρησιμοποιείται στην εντολή sed θα αναζητήσει οποιαδήποτε γραμμή ξεκινώντας από το s01 και θα προσθέσει τη νέα συμβολοσειρά μετά από αυτήν. Η τέταρτη γραμμή του αρχείου ξεκινά με s01 και η νέα γραμμή θα εισαχθεί μετά από αυτήν.

$Γάταproducts.txt

$sed '/^s01.*/a b01 tΜαγειρική σκόνη'products.txt

$Γάταproducts.txt

Η ακόλουθη έξοδος θα εμφανιστεί μετά την εκτέλεση της εντολής.


Η ακόλουθη εντολή sed θα αναζητήσει οποιαδήποτε γραμμή τελειώνει με σκόνη και θα εισαγάγει τη νέα γραμμή μετά από αυτήν. Η τρίτη γραμμή του αρχείου τελειώνει με Powder. Έτσι, η νέα γραμμή θα εισαχθεί μετά από αυτήν τη γραμμή.

$Γάταproducts.txt

$sed '/Σκόνη $/a b01 tΠουρά σε σκόνη'products.txt

$Γάταproducts.txt

Η ακόλουθη έξοδος θα εμφανιστεί μετά την εκτέλεση των παραπάνω εντολών.

Παράδειγμα-5: Εισαγάγετε πολλές γραμμές μετά το μοτίβο αντιστοίχισης χρησιμοποιώντας ένα

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

Εδώ, δύο γραμμές θα προστεθούν μετά την τρίτη γραμμή, σύμφωνα με το μοτίβο.

$Γάταproducts.txt

$sed '/^[a-c]/a b01 tΜαφή σε σκόνη nb02 tΜαγειρική σόδα'products.txt

$Γάταproducts.txt

Η ακόλουθη έξοδος θα εμφανιστεί μετά την εκτέλεση των παραπάνω εντολών.

Παράδειγμα-6: Εισαγάγετε μια γραμμή αφού ταιριάξετε ένα μοτίβο χρησιμοποιώντας το I

$Γάταproducts.txt

$sed '/κρέμα/i b01 tΜπουκάνισμα σε σκόνη'products.txt

$Γάταproducts.txt

Η ακόλουθη έξοδος θα εμφανιστεί μετά την εκτέλεση των παραπάνω εντολών.

Παράδειγμα -7: Εισάγετε μια γραμμή μόνιμα μετά το μοτίβο αντιστοίχισης χρησιμοποιώντας την επιλογή -i

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

$Γάταproducts.txt

$sed -Εγώ '/e $/a g01 tGhee'products.txt

$Γάταproducts.txt

Η ακόλουθη έξοδος θα εμφανιστεί μετά την εκτέλεση των παραπάνω εντολών.

Συμπέρασμα:

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