logo

Sed Command v Linuxe/Unixe s príkladmi

Príkaz SED v systéme UNIX je skratka pre stream editor a môže vykonávať množstvo funkcií v súbore, ako je vyhľadávanie, hľadanie a nahradenie, vkladanie alebo mazanie. Hoci najbežnejšie použitie príkazu SED v systéme UNIX je na nahradenie alebo nájdenie a nahradenie. Pomocou SED môžete upravovať súbory aj bez toho, aby ste ich otvárali, čo je oveľa rýchlejší spôsob, ako nájsť a nahradiť niečo v súbore, ako najprv otvoriť tento súbor v editore VI a potom ho zmeniť.

  • SED je výkonný editor textových prúdov. Dokáže vkladať, mazať, vyhľadávať a nahrádzať (nahrádzať).
  • Príkaz SED v unixe podporuje regulárny výraz, ktorý mu umožňuje vykonávať komplexné porovnávanie vzorov.

Syntax:

 sed OPTIONS... [SCRIPT] [INPUTFILE...]>

Príklad:
Zvážte nižšie uvedený textový súbor ako vstup.



 $cat>geekfile.txt>
 unix is great os. unix is opensource. unix is free os. learn operating system. unix linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>

Vzorové príkazy

    Nahradenie alebo nahradenie reťazca : Príkaz Sed sa väčšinou používa na nahradenie textu v súbore. Nižšie uvedený jednoduchý príkaz sed nahradí slovo unix slovom linux v súbore.
     $sed 's/unix/linux/' geekfile.txt>

    Výkon :

    generátor náhodných čísel v c
     linux is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>

    Tu s určuje substitučnú operáciu. / sú oddeľovače. Unix je vzor vyhľadávania a linux je náhradný reťazec.

    V predvolenom nastavení príkaz sed nahradí prvý výskyt vzoru v každom riadku a nenahradí druhý, tretí...výskyt v riadku. Nahradenie n-tého výskytu vzoru v riadku: Na nahradenie prvého, druhého výskytu vzoru v riadku použite príznaky /1, /2 atď. Nasledujúci príkaz nahrádza druhý výskyt slova unix slovom linux v riadku.

    javascriptový komentár
     $sed 's/unix/linux/2' geekfile.txt>

    Výkon:

     unix is great os. linux is opensource. unix is free os. learn operating system. unix linux which one you choose. unix is easy to learn.linux is a multiuser os.Learn unix .unix is a powerful.>
    Nahradenie všetkých výskytov vzoru v riadku: Náhradný príznak /g (globálne nahradenie) určuje príkaz sed na nahradenie všetkých výskytov reťazca v riadku.
     $sed 's/unix/linux/g' geekfile.txt>

    Výkon :

     linux is great os. linux is opensource. linux is free os. learn operating system. linux linux which one you choose. linux is easy to learn.linux is a multiuser os.Learn linux .linux is a powerful.>
    Nahradenie od n-tého výskytu na všetky výskyty v riadku: Na nahradenie všetkých vzorov z n-tého výskytu vzoru v riadku použite kombináciu /1, /2 atď. a /g. Nasledujúci príkaz sed nahradí tretie, štvrté, piate... unixové slovo linuxovým slovom v riadku.
     $sed 's/unix/linux/3g' geekfile.txt>

    Výkon:

     unix is great os. unix is opensource. linux is free os. learn operating system. unix linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn linux .linux is a powerful.>
    Vložiť do zátvoriek prvý znak každého slova : Tento príklad sed vytlačí prvý znak každého slova v zátvorkách.
     $ echo 'Welcome To The Geek Stuff' | sed 's/([A-Z])/(1)/g'>

    Výkon:

     (W)elcome (T)o (T)he (G)eek (S)tuff>
    Nahradenie reťazca na konkrétnom čísle riadku: Príkaz sed môžete obmedziť na nahradenie reťazca na konkrétnom čísle riadku. Príkladom je
     $sed '3 s/unix/linux/' geekfile.txt>

    Výkon:

    numpy sumácia
     unix is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>

    Vyššie uvedený príkaz sed nahradí reťazec iba v treťom riadku. Duplikovanie nahradeného riadku s príznakom /p : Príznak tlače /p vytlačí nahradený riadok dvakrát na termináli. Ak riadok nemá vzor vyhľadávania a nie je nahradený, potom /p vytlačí tento riadok iba raz.

     $sed 's/unix/linux/p' geekfile.txt>

    Výkon:

     linux is great os. unix is opensource. unix is free os. linux is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>
    Tlač iba nahradených riadkov: Použite voľbu -n spolu s príznakom tlače /p na zobrazenie iba nahradených riadkov. Tu možnosť -n potlačí duplicitné riadky generované príznakom /p a vytlačí nahradené riadky iba raz.
     $sed -n 's/unix/linux/p' geekfile.txt>

    Výkon:

     linux is great os. unix is opensource. unix is free os. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>

    Ak použijete -n samostatne bez /p, potom sed nič nevypíše. Nahradenie reťazca v rozsahu riadkov: Môžete zadať rozsah čísel riadkov príkazu sed na nahradenie reťazca.

     $sed '1,3 s/unix/linux/' geekfile.txt>

    Výkon:

    regresné testovanie v testovaní softvéru
     linux is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>

    Tu príkaz sed nahrádza riadky s rozsahom od 1 do 3. Ďalším príkladom je

     $sed '2,$ s/unix/linux/' geekfile.txt>

    Výkon:

     unix is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful>

    Tu $ označuje posledný riadok v súbore. Príkaz sed teda nahradí text od druhého riadku po posledný riadok v súbore. Odstránenie riadkov z konkrétneho súboru: Príkaz SED možno použiť aj na odstránenie riadkov z konkrétneho súboru. Príkaz SED sa používa na vykonanie operácie vymazania bez otvorenia súboru
    Príklady:
    1. Ak chcete vymazať konkrétny riadok, povedzte v tomto príklade n

     Syntax: $ sed 'nd' filename.txt Example: $ sed '5d' filename.txt>

    2. Ak chcete odstrániť posledný riadok

    susedné uhly
     Syntax: $ sed '$d' filename.txt>

    3. Ak chcete vymazať riadok z rozsahu x až y

     Syntax: $ sed 'x,yd' filename.txt Example: $ sed '3,6d' filename.txt>

    4. Ak chcete vymazať od n-tého po posledný riadok

     Syntax: $ sed 'nth,$d' filename.txt Example: $ sed '12,$d' filename.txt>

    5. Ak chcete odstrániť čiaru zhody vzoru

     Syntax: $ sed '/pattern/d' filename.txt Example: $ sed '/abc/d' filename.txt>


Príkaz SED v Linuxe | Súprava 2