Jak odstranit řádky ze souboru
Podle Sed - Delete one or more lines from a file
Unixová funkce SED (stream editor, viz man sed) je účinný a všestranný nástroj k odstranění jednoho či více řádků ze souboru podle zadaného požadavku. Umoňuje odstranit ze souboru výrazy identifikované pomocí omezovačů (čárka, tab, mezera atd.), čísel řádků, vyhledání řetězce, výrazu nebo adresy řádku v souboru.
Syntax příkazu SED:
sed '{[/]<n>|<string>|<regex>[/]}d' <fileName>
sed '{[/]<adr1>[,<adr2>][/]d' <fileName>
- /.../=omezovače
- n = číslo řádku
- string = řetězec v řádku
- regex = regulární výraz odpovídající hledanému vzorku
- addr = adresa řádku (číslo nebo vzorek)
- d = odstranit
Příklady:
Odstranit 3. řádek:
sed '3d' fileName.txt
Odstranit řádek obsahující řetězec "awk":
sed '/awk/d' filename.txt
Odstranit poslední řádek:
sed '$d' filename.txt
Odstranit všechny prázdné řádky:
sed '/^$/d' filename.txt sed '/./!d' filename.txt
Odstranit řádek odpovídající regulárnímu výrazu (eliminací toho, který obsahuje číselné znaky s nejméně jednou číslicí na konci řádku):
sed '/[0-9/][0-9]*$/d' filename.txt
Odstranit řádky 7 až 9:
sed '7,9d' filename.txt
Totéž, ale místo adres stanovit parametry:
sed '/-Start/,/-End/d' filename.txt
Uvedené příklady změní soubor pouze ve výpisu na obrazovku (stdout1=screen).
K trvalé změně v souboru nutno použít možnosti zachovat původní soubor pomocí "-i[suffix]":
sed -i".bak" '3d' filename.txt