Ved visse lejligheder er vi nødt til at slette en bestemt linje fra en fil eller flere, for eksempel er det sket for mig, at jeg har haft en hel liste med filer, og jeg skal slette linje nr. 27 af alle disse (linje nr. 27 er en ACL , norm, regel, konfiguration), kan jeg enten redigere fil for fil, eller jeg kan bare opnå det, jeg har brug for ved hjælp af sed og et bash-script (valgfrit).
Men lad os prøve en enkelt fil noget enkel.
Vi har filen distros-deb.txt som indeholder dette:
debian
Kubuntu
ArchLinux
soluses
mynte
Med andre ord filen distros-deb.txt er det sted, hvor vi vil placere de Debian-baserede distroer, men der ser vi, at der i linje nr. 3 er "archlinux", en distro, der tydeligvis ikke har noget med Debian at gøre, så vi skal fjerne den linje. For at fjerne linje nr. 3 i den fil vil vi sætte følgende:
sed "3d" distros-deb.txt > distros-deb-ok.txt
At forklare denne linje er noget let, med tørstig "3d" vi indikerer, at vi sletter linje # 3 med distros-deb.txt Vi angiver, hvilken fil vi skal arbejde på, det vil sige linie nr. 3 i denne fil, indtil her, hvis vi trykker på Enter, vil det vise os, hvad vi vil have, men i terminalen, så med > distros-deb-ok.txt vi indikerer, at i stedet for at vise resultatet i terminalen, skal du lægge det i en fil med dette navn.
Hvad er simpelt?
Vi kan også undgå at bruge > distros-deb-ok.txt ved hjælp af en korrekt parameter for sed, parameteren -i
Hvis vi ønsker at fjerne linjen fra filen og gemme den med samme navn (og ikke i en anden fil), skal du blot tilføje parameteren -i :
sed -i "3d" distros-deb.txt
Dette fjerner linje nr. 3 fra distros-deb.txt og gemmer den.
Hvad hvis jeg vil have en række linjer, det vil sige at fjerne linje nr. 3, men også nr. 4 og nr. 5? For at opnå dette sætter vi området fra 3 til 5, det vil sige:
sed -i "3,5d" distros-deb.txt
Og det vil kun vise mig debian og kubuntu
Så hvad hvis jeg vil slette fra linje 2 til den sidste, når jeg ikke kender de samlede linjer?
Brug bare dollarsymbolet - »$
sed -i "2,$d" distros-deb.txt
Hvis du vil fjerne fra første linje til nr. 4, sætter vi simpelthen værdien 1 i starten:
sed -i "1,4d" distros-deb.txt
Dette har været alt, et meget nyttigt tip, når du vil lave bash-scripts til at automatisere opgaver, og du skal ændre og fjerne linjer med konfigurationsfiler, for at ændre kan vi bruge sed o perl, samt at eliminere ved vi allerede, hvordan man gør det med sed
hilsen