Kā izdzēst konkrētas rindas no faila, izmantojot sed

Dažos gadījumos mums ir jāizdzēš konkrēta rinda no faila vai vairāki, piemēram, man ir gadījies, ka man ir bijis vesels failu saraksts, un man ir jāizdzēš 27. rinda no visiem šiem (27. rindiņa ir tāda, ka (ACL, norma, noteikums, konfigurācija), es varu vai nu rediģēt failu pēc faila, vai arī varu vienkārši sasniegt nepieciešamo, izmantojot komandu slāpes un bash skripts (pēc izvēles).

Mēģināsim nedaudz vienkāršu failu.

Mums ir fails distros-deb.txt kas satur šo:

Debian

kubuntu

Archlinux

solus

piparmētra

Citiem vārdiem sakot, fails distros-deb.txt ir tas, kurā mēs ievietosim Debian balstītas distros, bet tur mēs redzam, ka 3. rindā ir "archlinux", distro, kam acīmredzami nav nekāda sakara ar Debian, tāpēc mums šī līnija ir jānovērš. Lai novērstu šī faila 3. rindiņu, mēs ievietosim:

sed "3d" distros-deb.txt > distros-deb-ok.txt

Izskaidrot šo rindu ir nedaudz viegli, izmantojot slāpes "3d" mēs norādām, ka izdzēsīsim 3. rindiņu ar distros-deb.txt Mēs norādām, pie kura faila strādāt, tas ir, izdzēsiet šī faila 3. rindiņu, līdz šeit, ja mēs nospiedīsim Enter, tas mums parādīs, ko mēs vēlamies, bet terminālā, tāpēc ar > distros-deb-ok.txt mēs norādām, ka tā vietā, lai parādītu rezultātu terminālā, to ievieto failā ar šo nosaukumu.

Kas ir vienkāršs?

Tāpat mēs varam izvairīties no > distros-deb-ok.txt izmantojot pareizu parametru slāpes, parametrs -i

Tas ir, ja mēs vēlamies izdzēst līniju no faila un saglabāt to ar tādu pašu nosaukumu (nevis citā failā), vienkārši pievienojiet parametru -i :

sed -i "3d" distros-deb.txt

Tas noņems 3. līniju no distros-deb.txt un saglabās to.

Ko darīt, ja es vēlos virkni līniju, tas ir, noņemt 3. līniju, bet arī 4. un 5. līniju? Lai to panāktu, mēs ievietojam diapazonu no 3 līdz 5, tas ir:

sed -i "3,5d" distros-deb.txt

Un tas man parādīs tikai debian un kubuntu 

Ko darīt, ja es vēlos izdzēst no 2. rindas uz pēdējo, kad nezinu kopējo rindu skaitu?

Vienkārši izmantojiet dolāra simbolu - »$

sed -i "2,$d" distros-deb.txt

Gadījumā, ja vēlaties izslēgt no pirmās rindas uz # 4, tad sākumā vienkārši ievietojam vērtību 1:

sed -i "1,4d" distros-deb.txt

Tas ir bijis viss, ļoti noderīgs padoms, kad vēlaties izveidot bash skriptus, lai automatizētu uzdevumus, un jums ir jāpārveido un jānoņem konfigurācijas failu rindas, lai modificētu, ko mēs varam izmantot slāpes o Perl, kā arī likvidēt jau zinām kā to izdarīt ar sed 

Sveicieni


Pievienot kā vēlamo avotu pakalpojumā Google