GNU/Linux >> Znalost Linux >  >> Linux

20 Sed (Stream Editor) Příklady příkazů pro uživatele Linuxu

Příkaz Sed nebo Editor streamu je velmi výkonný nástroj nabízený systémy Linux/Unix. Používá se hlavně pro záměnu textu , najít a nahradit, ale může také provádět další textové manipulace, jako je vkládání , smazání , hledejte atd. Pomocí SED můžeme upravovat kompletní soubory, aniž bychom je museli otevírat. Sed také podporuje použití regulárních výrazů, což ze sed dělá ještě výkonnější nástroj pro manipulaci s testy .

V tomto článku se naučíme používat příkaz SED s pomocí několika příkladů. Základní syntaxe pro použití příkazu sed je,

sed OPTIONS… [SCRIPT] [INPUTFILE…]

Nyní se podívejme na několik příkladů.

Příklad:1) Zobrazení částečného textu souboru

Pomocí sed můžeme zobrazit pouze část souboru, nikoli celý soubor. Chcete-li zobrazit některé řádky souboru, použijte následující příkaz

[[email protected] ~]$ sed -n 22,29p testfile.txt

zde možnost „n“ potlačí tisk celého souboru a možnost „p“ vytiskne pouze řádky od 22 do 29.

Příklad :2) Zobrazit všechny kromě některých řádků

Chcete-li zobrazit veškerý obsah souboru kromě jeho části, použijte následující příkaz

[[email protected] ~]$ sed 22,29d testfile.txt

Možnost „d“ odstraní zmíněné řádky z výstupu.

Příklad :3) Zobrazte každý 3. řádek začínající N-tým řádkem

Pro zobrazení obsahu každého 3. řádku začínajícího řádkem číslo 2 nebo libovolného jiného řádku použijte následující příkaz

[[email protected] ~]$ sed -n '2~3p' file.txt

Příklad :4 ) Smazání řádku pomocí příkazu sed

Chcete-li odstranit řádek se sed ze souboru, použijte následující příkaz

[[email protected] ~]$ sed Nd testfile.txt

kde „N“ je číslo řádku a možnost „d“ smaže uvedené číslo řádku. Chcete-li odstranit poslední řádek souboru, použijte

[[email protected] ~]$ sed $d testfile.txt

Příklad :5) Smazání řady řádků

Chcete-li ze souboru odstranit řadu řádků, spusťte

[[email protected] ~]$ sed '29,34d' testfile.txt

Tím se odstraní řádky 29 až 34 ze souboru testfile.txt.

Příklad :6) Mazání jiných než zmíněných řádků

Chcete-li ze souboru odstranit řádky jiné než uvedené, použijeme ‚!‘

[[email protected] ~]$ sed '29,34!d' testfile.txt

zde se možnost „!“ používá jako ne, takže podmínku obrátí, tj. nesmaže uvedené řádky. Všechny řádky ostatní 29-34 budou ze souborů testfile.txt odstraněny.

Příklad :7) Přidání prázdných řádků/mezer

Chcete-li přidat prázdný řádek za každý neprázdný řádek, použijeme volbu ‚G‘,

[[email protected] ~]$ sed G testfile.txt

Příklad :8) Vyhledání a nahrazení řetězce pomocí sed

K vyhledání a nahrazení řetězce ze souboru použijeme následující příklad

[[email protected] ~]$ sed 's/danger/safety/' testfile.txt

zde možnost „s“ vyhledá slovo „nebezpečí“ a nahradí ho výrazem „bezpečnost“ na každém řádku pouze při prvním výskytu.

Příklad :9) Vyhledejte a nahraďte řetězec z celého souboru pomocí sed

K úplnému nahrazení slova ze souboru použijeme možnost ‚g‘  za ‚s‘,

[[email protected] ~]$ sed 's/danger/safety/g' testfile.txt

Příklad :10) Nahraďte n-tý výskyt vzoru řetězce

Můžeme také nahradit řetězec na n-tý výskyt ze souboru. Jako nahradit „nebezpečí“ za „bezpečnost“ pouze při druhém výskytu,

[[email protected] ~]$ sed ‘s/danger/safety/2’ testfile.txt

Chcete-li nahradit „nebezpečí“ při 2. výskytu každého řádku z celého souboru, použijte

[[email protected] ~]$ sed 's/danger/safety/2g' testfile.txt

Příklad :11) Nahraďte řetězec na konkrétním řádku

Chcete-li nahradit řetězec pouze z určitého řádku, použijte

[[email protected] ~]$ sed '4 s/danger/safety/' testfile.txt

Tím se nahradí pouze řetězec ze 4. řádku souboru. Můžeme také zmínit řadu řádků namísto jednoho řádku,

[[email protected] ~]$  sed '4,9 s/danger/safety/' testfile.txt

Příklad :12) Přidejte řádek za/před odpovídající vyhledávání

Chcete-li po každé shodě vzoru přidat nový řádek s nějakým obsahem, použijte možnost ‚a‘ ,

[[email protected] ~]$ sed '/danger/a "This is new line with text after match"' testfile.txt

Chcete-li přidat nový řádek s nějakým obsahem a před každou shodou vzoru, použijte volbu ‚i‘,

[[email protected] ~]$ sed '/danger/i "This is new line with text before match" ' testfile.txt

Příklad :13) Změňte celý řádek se shodným vzorem

Chcete-li změnit celý řádek na nový, když se vyhledávací vzor shoduje, musíme použít možnost „c“ se sed,

[[email protected] ~]$ sed '/danger/c "This will be the new line" ' testfile.txt

Takže když vzor odpovídá ‚nebezpečí‘, celý řádek se změní na zmíněný řádek.

Pokročilé možnosti se sed

Doposud jsme používali pouze jednoduché výrazy se sed, nyní probereme některá pokročilá použití sed s regulárním výrazem,

Příklad :14) Spuštění více příkazů sed

Pokud potřebujeme provést více výrazů sed, můžeme použít možnost „e“ k řetězení příkazů sed,

[[email protected] ~]$  sed -e 's/danger/safety/g' -e 's/hate/love/' testfile.txt

Příklad :15) Vytvoření záložní kopie před úpravou souboru

Chcete-li vytvořit záložní kopii souboru, než jej upravíme, použijte volbu ‚-i.bak‘,

[[email protected] ~]$ sed -i.bak -e 's/danger/safety/g'  testfile.txt

Tím se vytvoří záložní kopie souboru s příponou .bak. Pokud chcete, můžete použít i jiné rozšíření.

Příklad :16) Smazání řádku souboru začínajícího a končícího vzorem

Chcete-li odstranit řádek začínající určitým řetězcem a končící jiným řetězcem, použijte

[[email protected] ~]$ sed -e 's/^danger.*stops$//g' testfile.txt

Tím se odstraní řádek s ‚nebezpečí‘ na začátku a ‚zastavení‘ na konci a mezi nimi může být libovolný počet slov, ‚.*‘ definuje tuto část.

Příklad :17) Připojování řádků

Chcete-li přidat nějaký obsah před každý řádek pomocí sed ®ex, použijte

[[email protected] ~]$ sed -e 's/.*/testing sed &/' testfile.txt

Takže nyní bude mít každý řádek před sebou ‚testovací sed‘.

Příklad :18) Odstranění všech komentovaných řádků a prázdných řádků

Chcete-li odstranit všechny komentované řádky, tj. řádky s # a všechny prázdné řádky, použijte

[[email protected] ~]$ sed -e 's/#.*//;/^$/d' testfile.txt

Chcete-li odstranit pouze řádky s komentářem, použijte

[[email protected] ~]$ sed -e 's/#.*//' testfile.txt

Příklad :19) Získejte seznam všech uživatelských jmen z /etc/passwd

Chcete-li získat seznam všech uživatelských jmen ze souboru /etc/passwd, použijte

[[email protected] ~]$  sed 's/\([^:]*\).*/\1/' /etc/passwd

na obrazovce se jako výstup vygeneruje úplný seznam všech uživatelských jmen.

Příklad :20) Zabránit přepsání systémových odkazů pomocí příkazu sed

Je známo, že příkaz „sed -i“ odstraňuje systémové odkazy a místo souboru odkazů vytváří pouze běžné soubory. Abychom se takové situaci vyhnuli a předešli ‘sed -i ‘ před zničením odkazů použijte ‘–následovat-symlinky ‘ s prováděným příkazem.

Předpokládejme, že chci deaktivovat SELinux na CentOS nebo RHEL Severs

[[email protected] ~]# sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

Toto bylo několik příkladů pro zobrazení sed, můžeme je použít k jejich použití podle potřeby. Pokud máte nějaké dotazy týkající se tohoto nebo jakéhokoli článku, podělte se s námi.

Přečtěte si také14 příkladů příkazů SCP pro bezpečný přenos souborů v systému Linux


Linux
  1. 8 tipů pro příkazový řádek Linuxu

  2. Uživatelé Linuxu Výukový program příkazů pro začátečníky (s příklady)

  3. Úvod do sed (Editor streamu) :Užitečné příklady příkazů sed

  1. Příkaz Linux sed:Jak používat Stream Editor

  2. 10 Sed (Editor streamu) Příklady příkazů

  3. Příklady příkazů sed v Linuxu

  1. 12 Příklady IP příkazů pro uživatele Linuxu

  2. Linux Uniq Command Tutorial pro začátečníky (10 příkladů)

  3. Linuxový příkaz dir pro začátečníky (10 příkladů)