GNU/Linux >> Znalost Linux >  >> Linux

Jak používat Sed Command v Linuxu s příklady

SED zkráceně 'Stream Editor' je výkonný editor textových proudů, který může provádět mnoho funkcí na souboru, který je vyhledávání, hledání a nahrazování a vkládání. Příkaz sed je příkaz s vědomím regulárních výrazů, což znamená, že rozumí regulárním výrazům, které jsou mu poskytovány.

SED se však primárně nebo hlavně používá pro nahrazování textu. S pomocí SED můžeme upravovat soubory, aniž bychom je museli otevírat, což bude mnohem rychlejší a rychlejší najít a nahradit něco v souboru, spíše než soubor otevírat a měnit.

V tomto tutoriálu se naučíme příkaz SED se snadno použitelnými a srozumitelnými příklady v našem prostředí Linux.

Syntaxe příkazu Sed

Syntaxe příkazu Sed je docela jednoduchá na pochopení, ale při použití je velmi výkonná. Zde je základní syntaxe SED takto:

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

Zvažte níže uvedený textový soubor ('content.txt') jako vstup pro příkaz sed models.

$ cat > content.txt

lorem ipsum is a dummy text. lorem ipsum has been the industry's standard dummy text.
lorem ipsum is highly used by designers. lorem ipsum is great for developers.
lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.
learn more about dummy text.

Níže jsou uvedeny nejpoužívanější příklady sed.

1. Nahrazení řetězce (slov nebo znaků)

Sed lze použít k vyhledání a nahrazení řetězce (slov nebo znaků) na vstupu. Možnost s se používá pro výměnu řetězce. Ve výchozím nastavení příkaz sed nahradí pouze první výskyt řetězce v řádku.

Následující příkaz nahradí slovo 'lorem' výrazem 'Lorem' v souboru 'content.txt' pro první výskyt na každém řádku:

$ sed 's/lorem/Lorem/' content.txt

Zde je 'lorem' hledaný řetězec a 'Lorem' je nahrazující řetězec.

Output
$ sed 's/lorem/Lorem/' content.txt
Lorem ipsum is a dummy text. lorem ipsum has been the industry's standard dummy text.
Lorem ipsum is highly used by designers. lorem ipsum is great for developers.
Lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.
learn more about dummy text.

2. Nahradit veškerý výskyt řetězce v souboru

Chcete-li vyhledat a nahradit všechny výskyty řetězce v souboru, použijte /g (globální nahrazení) příznak.

V následujícím příkazu /g příznak se používá k nahrazení všech výskytů řetězce 'lorem' řetězcem 'Lorem' v souboru 'content.txt'.

$ sed 's/lorem/Lorem/g' content.txt
Lorem ipsum is a dummy text. Lorem ipsum has been the industry's standard dummy text.
Lorem ipsum is highly used by designers. Lorem ipsum is great for developers.
Lorem ipsum is used for dummy text. Lorem ipsum doesn't have meaning.
learn more about dummy text.

3. Nahrazení n-tého výskytu vzoru v řádku

Příkaz sed lze použít s /1 ,/2 nebo n (libovolné číslo) k nahrazení prvního, druhého nebo n-tého výskytu řetězce v řádku.

Následující příkaz nahradí druhý (2) výskyt slova 'lorem' výrazem 'Lorem' v každém řádku.

$ sed 's/lorem/Lorem/2' content.txt

lorem ipsum is a dummy text. Lorem ipsum has been the industry's standard dummy text.
lorem ipsum is highly used by designers. Lorem ipsum is great for developers.
lorem ipsum is used for dummy text. Lorem ipsum doesn't have meaning.
learn more about dummy text.

Podobně jako příkaz tr může sed nahradit všechny výskyty znaků v sadě1 odpovídajícími znaky v sadě2 pomocí y/set1/set2/ .

$ echo 'a for apple' | sed -e 'y/af/AF/
Output
A For Apple

4. Nahradit od n-tého výskytu do všech výskytů v každém řádku

Můžeme použít kombinaci /1 ,/2 nebo n (libovolné číslo) a /g k nahrazení všech vzorů z n-tého výskytu řetězce v každém řádku.

V následujícím příkladu budou všechny výskyty řetězce 'lorem' nahrazeny 'Lorem' od 2. výskytu v každém řádku:

$ sed 's/lorem/Lorem/2g' content.txt
lorem ipsum is a dummy text. Lorem ipsum has been the industry's standard dummy text.
lorem ipsum is highly used by designers. Lorem ipsum is great for developers.
lorem ipsum is used for dummy text. Lorem ipsum doesn't have meaning.
learn more about dummy text.

5. Vyhledejte a nahraďte řetězec na zadaném čísle řádku

Pomocí sed můžeme omezit funkci pouze na nahrazení řetězce na konkrétním čísle řádku.

V následujícím příkazu můžeme zjistit, že pouze druhý řádek je nahrazen řetězcem 'Lorem'.

$ sed '2 s/lorem/Lorem/' content.txt

lorem ipsum is a dummy text. lorem ipsum has been the industry's standard dummy text.
Lorem ipsum is highly used by designers. Lorem ipsum is great for developers.
lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.
learn more about dummy text.

6. Zobrazit částečný text souboru

Pomocí příkazu sed můžete zobrazit spíše část souboru než celý soubor. -n volba se používá k potlačení tisku veškerého obsahu a p volba se používá tisk konkrétních řádků.

Následující příkaz vytiskne řádky od 2 do 4:

$ sed -n 2,4p content.txt
lorem ipsum is highly used by designers. lorem ipsum is great for developers.
lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.
learn more about dummy text.

7. Zobrazit veškerý obsah kromě konkrétních řádků

Příkaz Sed umožňuje zobrazit veškerý obsah souboru kromě jednotlivých řádků. V následujícím příkazu zobrazte veškerý obsah souboru 'content.txt' kromě řádků 1 a 2:

$ sed 1,2d content.txt
lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.
learn more about dummy text.

8. Zobrazit všechny řádky kromě řádky odpovídající vzoru

Následující příkaz sed můžeme použít k odstranění řádku, který má zmíněný vyhledávací vzor. Ve výstupu je řádek s "učit" odstraněn, protože odpovídá vyhledávacímu vzoru.

$ sed '/learn/d' content.txt
lorem ipsum is a dummy text. lorem ipsum has been the industry's standard dummy text.
lorem ipsum is highly used by designers. lorem ipsum is great for developers.
lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.

9. Zobrazit nahrazené řádky

Abychom vytiskli nahrazené řádky, používáme /p příznak spolu s -n .

Ve výstupu vidíme, že není poslední řádek, protože neměl vyhledávací vzor 'lorem'.

$ sed -n 's/lorem/Lorem/p' content.txt

Lorem ipsum is a dummy text. lorem ipsum has been the industry's standard dummy text.
Lorem ipsum is highly used by designers. lorem ipsum is great for developers.
Lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.

Další příklady příznaku 'p' a 'n'

Vytiskněte první řádek

$ sed -n '1p' content.txt

Rozsah tisku řádku

$ sed -n '1,4p' content.txt

Tisk více řádků

$ sed -n '1p;4p' content.txt

Vytisknout soubor

$ sed -n 'p' content.txt

Tisk obsahuje regulární výraz nebo slovo

$ sed -n '/RedHat/p' content.txt

Vytisknout, pokud obsahuje číslice

$ sed -n '/[0-9]/p' content.txt

Porovnejte regulární výraz a nahraďte

$ sed -n 's/^L/Matched--&/p' content.txt
Output
Matched--Lorem ipsum is a dummy text. Lorem ipsum has been the industry's standard dummy text.
Matched--Lorem ipsum is highly used by designers. Lorem ipsum is great for developers.
Matched--Lorem ipsum is used for dummy text. Lorem ipsum doesn't have meaning.

Použijte sed jako grep

Následující příkaz sed vyhledá uživatele 'root' v souboru '/etc/passwd':

$ sed -n '/root/p' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

10. Kombinujte příkazy SED

Pokud musíme provést více výrazů sed, musíme použít e možnost řetězit příkazy sed.

Vezměme si příklad, kdy nahradíme veškerý výskyt „lorem“ výrazem „Lorem“ a odstraníme řádek, který odpovídá vyhledávacímu vzoru.

$ sed -e 's/lorem/Lorem/g' -e '/learn/d' content.txt

Lorem ipsum is a dummy text. Lorem ipsum has been the industry's standard dummy text.
Lorem ipsum is highly used by designers. Lorem ipsum is great for developers.
Lorem ipsum is used for dummy text. Lorem ipsum doesn't have meaning.

11. Za každý řádek vložte prázdný řádek

Pomocí G můžete do souboru vložit jeden nebo více prázdných řádků.

Následující příkaz vloží mezi řádky jeden prázdný řádek:

$ sed G content.txt

lorem ipsum is a dummy text. lorem ipsum has been the industry's standard dummy text.

lorem ipsum is highly used by designers. lorem ipsum is great for developers.

lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.

learn more about dummy text.

Chcete-li vložit dva prázdné řádky, spusťte níže uvedený příkaz:

$ sed 'G;G' content.txt

lorem ipsum is a dummy text. lorem ipsum has been the industry's standard dummy text.

lorem ipsum is highly used by designers. lorem ipsum is great for developers.

lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.

learn more about dummy text.

11. Upravte a vytvořte záložní kopii původního souboru

Sed umožňuje upravit soubor a zároveň vytvořit záložní kopii původního souboru. Pro název záložního souboru používáme 'i.' a -e úpravy.

Následující příkaz vytvoří zálohu původního souboru 'content.txt' jako 'content.txt.bak'

$ sed -i.bak -e 's/lorem/Lorem/g' content.txt
Results
$ cat content.txt
Lorem ipsum is a dummy text. Lorem ipsum has been the industry's standard dummy text.
Lorem ipsum is highly used by designers. Lorem ipsum is great for developers.
Lorem ipsum is used for dummy text. Lorem ipsum doesn't have meaning.
learn more about dummy text.
$ cat content.txt.bak
lorem ipsum is a dummy text. lorem ipsum has been the industry's standard dummy text.
lorem ipsum is highly used by designers. lorem ipsum is great for developers.
lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.
learn more about dummy text.

12. Odstranění čáry se vzorem

Pomocí tohoto příkazu sed můžete odstranit řádek začínající určitým řetězcem a končící jiným řetězcem. V následujícím výstupu je řádek začínající „lorem“ a končící „textem“. je smazáno:

$ sed -e 's/^lorem.*text.$//g' content.txt
Output
lorem ipsum is highly used by designers. lorem ipsum is great for developers.
lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.
learn more about dummy text.

13. Přidání řetězce k řádkům

Můžeme provést následující příkaz a přidat nějaký obsah před každý řádek pomocí regulárního výrazu.

V následujícím výstupu vidíme, že před každý řádek je přidáno 'Tady'.

$ sed -e 's/.*/Here &/' content.txt
Here lorem ipsum is a dummy text. lorem ipsum has been the industry's standard dummy text.
Here lorem ipsum is highly used by designers. lorem ipsum is great for developers.
Here lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.
Here learn more about dummy text.

Před každý řádek vložte řetězec:

$ sed 'i \inserted line' content.txt
inserted line
Lorem ipsum is a dummy text. Lorem ipsum has been the industry's standard dummy text.
inserted line
Lorem ipsum is highly used by designers. Lorem ipsum is great for developers.
inserted line
Lorem ipsum is used for dummy text. Lorem ipsum doesn't have meaning.
inserted line
learn more about dummy text.

Za každý řádek připojte řetězec:

$ sed 'a \Appended line' content.txt
Lorem ipsum is a dummy text. Lorem ipsum has been the industry's standard dummy text.
Appended line
Lorem ipsum is highly used by designers. Lorem ipsum is great for developers.
Appended line
Lorem ipsum is used for dummy text. Lorem ipsum doesn't have meaning.
Appended line
learn more about dummy text.
Appended line

14. Extrahujte uživatelská jména ze souboru /etc/passwd

Příkaz Sed lze snadno použít k získání celého seznamu všech uživatelských jmen ze souboru '/etc/passwd'.

Následující příkaz sed extrahuje všechna dostupná uživatelská jména pro linux:

$ sed 's/\([^:]*\).*/\1/' /etc/passwd
root
daemon
bin
sys
sync
man
lp
news
uucp
proxy
backup
list
gnats
nobody
systemd-network
systemd-resolve
syslog
messagebus
uuidd
debian-spamd
admin

15. Tisk řádku bez komentovaných řádků (#) a prázdných řádků

Tisk bez komentovaných (#) řádků a prázdných řádků je jednoduchý se sed.

Můžeme provést následující příkaz a vytisknout všechny řádky, které neobsahují symbol komentáře (#) a všechny prázdné řádky.

$ sed -e 's/#.*//;/^$/d' content.txt

Chcete-li odstranit pouze komentované řádky:

$ sed -e 's/#.*//' content.txt

16. Extrahujte všechny IP adresy pomocí sed z řetězce

Podívejme se, jak extrahovat IP adresy pomocí příkazu sed s regulárním výrazem. Do souboru 'content.txt' jsem přidal několik IP adres pro testování.

$ cat content.txt
lorem ipsum is a dummy text. lorem ipsum has been the industry's standard dummy text.
lorem ipsum is highly used by designers. lorem ipsum is great for developers.
lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.
learn more about dummy text.
122.65.49.2
221.11.165.233
219.158.9.97
219.158.19.137

Nyní použijte regex k extrahování IP adresy ze souboru 'content.txt' následovně:

$ sed '/\n/!s/[0-9.]\+/\n&\n/;/^\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\n/P;D' content.txt
122.65.49.2
221.11.165.233
219.158.9.97
219.158.19.137

Našel jsem další snadný příkaz pro získání stejných výsledků, zkontrolujte níže:

$ sed -n '/[0-9]/p' content.txt.bak
122.65.49.2
221.11.165.233
219.158.9.97
219.158.19.137

Můžeme také kombinovat sed s jiným příkazem pomocí potrubí (|), viz příklad níže:

$ ip addr | sed -n '/inet/p' | sed -e 's/  */ /g' | cut -d ' ' -f3
127.0.0.1/8
::1/128
75.208.225.10/24
2600:3c02::e03c:92ff:fe60:d7e2/64
fe80::f03c:92ef:fe60:d7e2/64

17. Přesměrování a zápis do souboru

w flag lze použít k zápisu výstupu do souboru namísto tisku na standardní výstup. w příkaz vyžaduje název souboru, do kterého bude zapsán výstup.

Následující příkaz sed přesměruje výstup do nového souboru 'rootpwd.txt':

$ sed -n '/root/w rootpwd.txt' /etc/passwd
$ cat rootpwd.txt
root:x:0:0:root:/root:/bin/bash

Závěr

V tomto tutoriálu příkazů pro Linux jsme se naučili základní syntaxi příkazu sed a s nejběžněji a nejpoužívanějšími příklady sed. Je možné použít sed ve skriptování bash nebo shell k provádění různých automatizovaných úloh při manipulaci s textem a operacích sed v prostředí Linuxu. Pomocí tohoto tutoriálu lze snadno porozumět sed a v případě potřeby okamžitě začít s implementací. Pokud máte nějaké dotazy, návrhy nebo zpětnou vazbu, napište je do pole pro komentáře níže.


Linux
  1. Jak používat Pipes a Named Pipes v Linuxu (s příklady)

  2. Příkaz SCP v Linuxu:Jak jej používat, s příklady

  3. Jak používat příkaz Vmstat v Linuxu vysvětleno na příkladech

  1. Jak používat Linux Hexdump Command s praktickými příklady

  2. Jak používat příkaz Rmmod v systému Linux s příklady

  3. Jak používat Dig Command v Linuxu s příklady

  1. Jak používat příkaz su v Linuxu s příklady

  2. Jak používat Linux Shutdown Command s příklady

  3. Jak používat w Command v Linuxu s příklady