Előfordulhat, hogy egy vagy több fájlból el kell távolítanunk egy adott sort. Például van egy egész fájllistám, és mindegyikből el kell távolítanom a 27. sort (a 27. sor egy ACL, szabály, konfiguráció). Szerkeszthetem fájlonként, vagy egyszerűen elérhetem, amit kell, a sed parancs és egy bash szkript (opcionális) használatával.
De próbálkozzunk egy egyszerű fájllal.
Van egy distros-deb.txt fájlunk , ami ezt tartalmazza:
debian
ubuntu
archlinux
solusok
menta
Más szóval, a distros-deb.txt fájlban fogjuk felsorolni a Debian-alapú disztribúciókat, de látjuk, hogy a 3. sor az "archlinux" szót tartalmazza, egy olyan disztribúciót, amelynek nyilvánvalóan semmi köze a Debianhoz, ezért el kell távolítanunk ezt a sort. A 3. sor eltávolításához a fájlból a következőket kell hozzáadnunk:
sed "3d" distros-deb.txt > distros-deb-ok.txt
Ennek a sornak a magyarázata egyszerű: a `sed "3d"` paranccsal azt jelezzük, hogy a 3. sort töröljük, a `distros-deb.txt` paranccsal pedig azt, hogy melyik fájlon dolgozzon, azaz törölje a fájl 3. sorát. Eddig a pontig, ha megnyomjuk az `<kbd>Enter</kbd>` billentyűt, akkor a terminálban mutatja meg, amit akarunk, tehát a `> distros-deb-ok.txt` paranccsal azt jelezzük, hogy a terminál helyett egy ilyen nevű fájlba kell tennie az eredményt.
Mi az egyszerű?
A > distros-deb-ok.txt használatát elkerülhetjük egy sed paraméter , az -i paraméter használatával is.
Más szóval, ha el akarjuk távolítani a sort a fájlból, és ugyanazzal a névvel akarjuk menteni (és nem egy másik fájlba), egyszerűen hozzá kell adnunk az -i paramétert :
sed -i "3d" distros-deb.txt
Ez eltávolítja a 3. sort a distros-deb.txt fájlból és elmenti.
Mi van, ha egy sor tartományt szeretnék, vagyis a # 3, de a # 4 és az # 5 sor eltávolítását is? Ennek elérése érdekében a 3 és 5 közötti tartományt tesszük, vagyis:
sed -i "3,5d" distros-deb.txt
És csak a debiant és a kubuntut fogja mutatni
Tehát mi van, ha törölni akarok a 2. sorból az utolsóba, amikor nem ismerem a teljes sort?
Csak használja a dollár szimbólumot - »$
sed -i "2,$d" distros-deb.txt
Abban az esetben, ha ki akarsz küszöbölni az első sorból a # 4-be, akkor egyszerűen az 1 értéket tesszük az elejére:
sed -i "1,4d" distros-deb.txt
Nagyjából ennyi, egy elég hasznos tipp, ha bash szkripteket szeretnél írni feladatok automatizálásához, és módosítani, illetve törölni kell a konfigurációs fájlok sorait. A módosításhoz használhatjuk a sed vagy a perl parancsot, a törléshez pedig már tudjuk, hogyan kell a sed parancsot használni.
Üdvözlet