Jak najdu n-tý řádek v souboru v příkazovém řádku systému Linux? Jak zobrazím číslo řádku x na řádku číslo y?
V Linuxu existuje několik způsobů, jak dosáhnout stejného výsledku. Tisk konkrétních řádků ze souboru není výjimkou.
Chcete-li zobrazit 13. řádek, můžete použít kombinaci hlavy a ocasu:
head -13 file_name | tail +13
Nebo můžete použít příkaz sed:
sed -n '13p' file.txt
Chcete-li zobrazit čísla řádků od 20 do 25, můžete zkombinovat příkazy hlavy a ocasu takto:
head -25 file_name | tail +20
Nebo můžete použít příkaz sed takto:
sed -n '20,25p' lines.txt
Následuje podrobné vysvětlení každého příkazu. Ukážu také použití příkazu awk pro tento účel.
Zobrazení konkrétních čar pomocí příkazů hlavy a ocasu
Toto je můj oblíbený způsob zobrazování vybraných čar. Je pro mě snazší si ji zapamatovat a použít.
Vytisknout jeden konkrétní řádek
Použijte kombinaci příkazů hlava a ocas v následující funkci číslo řádku x:
head -x file_name | tail +x
X můžete nahradit číslem řádku, který chcete zobrazit. Řekněme tedy, že chcete zobrazit 13. řádek souboru.
[email protected]:~$ head -13 lines.txt | tail +13
This is line number 13
Vysvětlení :Pravděpodobně už víte, že příkaz head získává řádky souboru od začátku, zatímco příkaz tail získává řádky od konce.
Část příkazu „head -x“ získá prvních x řádků souborů. Poté tento výstup přesměruje na příkaz tail. Příkaz tail zobrazí všechny řádky začínající od řádku číslo x.
Je zřejmé, že pokud vezmete 13 řádků shora, řádky začínající od čísla 13 do konce budou 13. řádkem. To je logika tohoto příkazu.
Vytisknout konkrétní rozsah řádků
Nyní vezmeme naši kombinaci příkazů hlavy a ocasu k zobrazení více než jednoho řádku.
Řekněme, že chcete zobrazit všechny řádky od x do y. To zahrnuje také x-tý a y-tý řádek:
head -y lines.txt | tail +x
Vezměme si praktický příklad. Předpokládejme, že chcete vytisknout všechny řádky od řádku číslo 20 do 25:
[email protected]:~$ head -25 lines.txt | tail +20
This is line number 20
This is line number 21
This is line number 22
This is line number 23
This is line number 24
This is line number 25
Použijte SED k zobrazení konkrétních řádků
Výkonný příkaz sed poskytuje několik způsobů tisku konkrétních řádků.
Chcete-li například zobrazit 10. řádek, můžete použít sed následujícím způsobem:
sed -n '10p' file.txt
-n potlačí výstup, zatímco příkaz p vytiskne konkrétní řádky. Přečtěte si tuto podrobnou příručku SED, abyste se jí naučili a porozuměli jí podrobně.
Chcete-li zobrazit všechny řádky od řádku číslo x do řádku číslo y, použijte toto:
[email protected]:~$ sed -n '3,7p' lines.txt
This is line number 3
This is line number 4
This is line number 5
This is line number 6
This is line number 7
Použijte AWK k tisku konkrétních řádků ze souboru
Příkaz awk se může zdát komplikovaný a je s tím jistě spojena křivka učení. Ale stejně jako sed je i awk docela výkonný, pokud jde o úpravy a manipulaci s obsahem souborů.
[email protected]:~$ awk 'NR==5' lines.txt
This is line number 5
NR označuje „číslo aktuálního záznamu“. Přečtěte si prosím naši podrobnou příručku příkazů AWK pro více informací.
Chcete-li zobrazit všechny řádky od x do y, můžete použít příkaz awk následujícím způsobem:
[email protected]:~$ awk 'NR>=20 && NR<=25' lines.txt
This is line number 20
This is line number 21
This is line number 22
This is line number 23
This is line number 24
This is line number 25
Dodržuje syntaxi, která je podobná většině programovacích jazyků.
Doufám, že vám tento rychlý článek pomohl při zobrazení konkrétních řádků souboru v příkazovém řádku Linuxu. Pokud znáte nějaký jiný trik pro tento účel, podělte se o něj s námi ostatními v sekci komentářů.