Tento článek je součástí pokračující série výukových programů příkazů sed pro Unix. V našich předchozích článcích jsme se naučili sed pomocí jednotlivých příkazů – tisk, mazání, nahrazení a zápis do souboru.
Sed poskytuje mnoho příkazů k provedení mnoha operací s řádky v souboru.
V tomto článku se podíváme na to, jak připojit, vložit, nahradit řádek v souboru a jak získat čísla řádků souboru.
- Přidat řádky
- Vložit řádky
- Nahradit řádky
- Počítat řádky
Nejprve vytvořte soubor geekstuff.txt, který bude použit ve všech níže uvedených příkladech.
$cat thegeekstuff.txt Linux Sysadmin Databases - Oracle, mySQL etc. Security (Firewall, Network, Online Security etc) Storage in Linux Productivity (Too many technologies to explore, not much time available) Windows- Sysadmin, reboot etc.
Přidat řádky pomocí příkazu Sed
Sed poskytuje příkaz „a“, který za každý řádek přidá řádek s adresou nebo vzorem.
Syntax: #sed 'ADDRESS a\ Line which you want to append' filename #sed '/PATTERN/ a\ Line which you want to append' filename
Příklad připojení Sed 1. Přidejte řádek za 3. řádek souboru.
Za 3. řádek přidejte řádek „Skvělé gadgety a webové stránky“. Příkaz sed „a“ vloží řádek za shodu.
$ sed '3 a\ > Cool gadgets and websites' thegeekstuff.txt Linux Sysadmin Databases - Oracle, mySQL etc. Security (Firewall, Network, Online Security etc) Cool gadgets and websites Storage in Linux Productivity (Too many technologies to explore, not much time available) Windows- Sysadmin, reboot etc.
Sed Append Příklad 2. Připojte řádek za každý řádek odpovídající vzoru
Níže uvedený příkaz sed přidá řádek „Linux Scripting“ za každý řádek, který odpovídá vzoru „Sysadmin“.
$ sed '/Sysadmin/a \ > Linux Scripting' thegeekstuff.txt Linux Sysadmin Linux Scripting Databases - Oracle, mySQL etc. Security (Firewall, Network, Online Security etc) Storage in Linux Productivity (Too many technologies to explore, not much time available) Windows- Sysadmin, reboot etc. Linux Scripting
Sed Append Příklad 3. Připojte řádek na konec souboru
Následující příklad připojuje na konec souboru řádek „Website Design“.
$ sed '$ a\ > Website Design' thegeekstuff.txt Linux Sysadmin Databases - Oracle, mySQL etc. Security (Firewall, Network, Online Security etc) Storage in Linux Productivity (Too many technologies to explore, not much time available) Windows- Sysadmin, reboot etc. Website Design
Vložit řádky pomocí příkazu Sed
Sed příkaz „i“ se používá k vložení řádku před každý řádek s rozsahem nebo vzorem.
Syntax: #sed 'ADDRESS i\ Line which you want to insert' filename #sed '/PATTERN/ i\ Line which you want to insert' filename
Příklad vložení Sed 1. Přidejte řádek před 4. řádek řádku.
Před čtvrtý řádek přidejte řádek „Skvělé gadgety a webové stránky“. Příkaz „a“ vloží řádek za shodu, zatímco „i“ vloží před shodu.
$ sed '4 i\ > Cool gadgets and websites' thegeekstuff.txt Linux Sysadmin Databases - Oracle, mySQL etc. Security (Firewall, Network, Online Security etc) Cool gadgets and websites Storage in Linux Productivity (Too many technologies to explore, not much time available) Windows- Sysadmin, reboot etc.
Příklad vložení Sed 2. Vložte řádek před každý řádek se vzorem
Níže uvedený příkaz sed přidá řádek „Linux Scripting“ před každý řádek, který odpovídá vzoru zvanému „Sysadmin“.
$ sed '/Sysadmin/i \ > Linux Scripting' thegeekstuff.txt Linux Scripting Linux Sysadmin Databases - Oracle, mySQL etc. Security (Firewall, Network, Online Security etc) Storage in Linux Productivity (Too many technologies to explore, not much time available) Linux Scripting Windows- Sysadmin, reboot etc.
Příklad vložení Sed 3. Vložte řádek před poslední řádek souboru.
Před poslední řádek souboru přidejte řádek „Website Design“.
$ sed '$ i\ > Website Design' thegeekstuff.txt Linux Sysadmin Databases - Oracle, mySQL etc. Security (Firewall, Network, Online Security etc) Storage in Linux Productivity (Too many technologies to explore, not much time available) Website Design Windows- Sysadmin, reboot etc.
Nahradit řádky pomocí příkazu Sed
Příkaz „c“ v sed se používá k nahrazení každého řádku, který odpovídá vzoru nebo rozsahu, novým daným řádkem.
Syntax: #sed 'ADDRESS c\ new line' filename #sed '/PATTERN/ c\ new line' filename
Příklad nahrazení sed 1. Nahraďte první řádek souboru
Níže uvedený příkaz nahradí první řádek souboru textem „The Geek Stuff“.
$ sed '1 c\ > The Geek Stuff' thegeekstuff.txt The Geek Stuff Databases - Oracle, mySQL etc. Security (Firewall, Network, Online Security etc) Storage in Linux Productivity (Too many technologies to explore, not much time available) Windows- Sysadmin, reboot etc.
Příklad nahrazení sed 2. Nahraďte řádek, který odpovídá vzoru
Nahraďte každý řádek, který má vzor „Linux Sysadmin“ na „Linux Sysadmin – Skriptování“.
$ sed '/Linux Sysadmin/c \ > Linux Sysadmin - Scripting' thegeekstuff.txt Linux Sysadmin - Scripting Databases - Oracle, mySQL etc. Security (Firewall, Network, Online Security etc) Storage in Linux Productivity (Too many technologies to explore, not much time available) Windows- Sysadmin, reboot etc.
Příklad nahrazení sed 3. Nahraďte poslední řádek souboru
Níže uvedený příkaz Sed nahradí poslední řádek souboru výrazem „Poslední řádek souboru“.
$ sed '$ c\ > Last line of the file' thegeekstuff.txt Linux Sysadmin Databases - Oracle, mySQL etc. Security (Firewall, Network, Online Security etc) Storage in Linux Productivity (Too many technologies to explore, not much time available) Last line of the file
Tisk čísel řádků pomocí příkazu Sed
„=“ je příkaz v sed pro tisk aktuálního čísla řádku na standardní výstup.
Syntax: #sed '=' filename
Výše uvedená syntaxe příkazu send vypíše na první řádek číslo řádku a na další řádek původní řádek ze souboru.
Příkaz sed „=“ přijímá pouze jednu adresu, takže pokud chcete vytisknout číslo řádku pro rozsah řádků, musíte použít složené závorky.
Syntax: # sed -n '/PATTERN/,/PATTERN/ { = p }' filename
Příklad čísla řádku Sed 1. Najděte číslo řádku, který obsahuje vzor
Níže uvedený příkaz sed vytiskne číslo řádku, pro který se shoduje se vzorem „Databáze“
$ sed -n '/Databases/=' thegeekstuff.txt 2
Příklad čísla řádků Sed 2. Rozsah tisku čísel řádků
Vytiskněte čísla řádků pro shodu řádků ze vzoru „Oracle“ po „Produktivita“.
$ sed -n '/Oracle/,/Productivity/{ > = > p > }' thegeekstuff.txt 2 Databases - Oracle, mySQL etc. 3 Security (Firewall, Network, Online Security etc) 4 Storage in Linux 5 Productivity (Too many technologies to explore, not much time available)
Příklad čísla sedmého řádku 3. Vytiskněte celkový počet řádků v souboru
Číslo řádku posledního řádku souboru bude celkovým počtem řádků v souboru. Vzor $ určuje poslední řádek souboru.
$ sed -n '$=' thegeekstuff.txt 6