GNU/Linux >> Znalost Linux >  >> Linux

Výukový program Unix Sed:Připojit, vložit, nahradit a spočítat řádky souboru

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

Linux
  1. Rychlý unixový příkaz pro zobrazení konkrétních řádků uprostřed souboru?

  2. bash skript připojí text k prvnímu řádku souboru

  3. sed:jak nahradit řádek, pokud byl nalezen, nebo připojit na konec souboru, pokud nebyl nalezen?

  1. Nahradit řádek jiným obsahem pomocí Sed And Parallel pro velký soubor?

  2. Počítat řádky v souboru?

  3. nahradit řádky v jednom souboru řádky v jiném číslem řádku

  1. Nahradit rozsah řádků rozsahem řádků (sed nebo jiné)?

  2. Jak připojit více řádků k souboru?

  3. Jak počítat počet řádků v souboru v Linuxu (příklady wc a nl)