Ndonjëherë na duhet të heqim një rresht specifik nga një ose më shumë skedarë. Për shembull, kam pasur një listë të tërë skedarësh dhe më duhet të heq rreshtin #27 nga të gjithë ata (rreshti #27 është një ACL, rregull, konfigurim). Mund të modifikoj skedar pas skedari ose thjesht mund të arrij atë që më duhet duke përdorur komandën sed dhe një skript bash (opsional).
Por, le të provojmë një skedar të vetëm disi të thjeshtë.
Ne kemi skedarin distros-deb.txt i cili përmban këtë:
Debian
Kubuntu
archlinux
solucione
nenexhik
Me fjalë të tjera, skedari distros-deb.txt është vendi ku do të rendisim shpërndarjet e bazuara në Debian, por shohim që rreshti #3 përmban "archlinux", një shpërndarje që qartësisht nuk ka të bëjë fare me Debian, kështu që duhet ta heqim atë rresht. Për të hequr rreshtin #3 nga ai skedar, do të shtojmë sa vijon:
sed "3d" distros-deb.txt > distros-deb-ok.txt
Shpjegimi i këtij rreshti është i lehtë: me `sed "3d"` tregojmë se do të fshijmë rreshtin #3, me `distros-deb.txt` i tregojmë se në cilin skedar duhet të punojë, domethënë, të fshijë rreshtin #3 nga ky skedar. Deri në këtë pikë, nëse shtypim `<kbd>Enter</kbd>`, do të na tregojë atë që duam, por në terminal, kështu që me `> distros-deb-ok.txt` tregojmë se në vend që të tregojë rezultatin në terminal, duhet ta vendosë atë në një skedar me këtë emër.
Çfarë është e thjeshtë?
Gjithashtu mund të shmangim përdorimin e > distros-deb-ok.txt duke përdorur një parametër sed , parametrin -i
Me fjalë të tjera, nëse duam ta heqim rreshtin nga skedari dhe ta ruajmë atë me të njëjtin emër (dhe jo në një skedar tjetër), thjesht duhet të shtojmë parametrin -i :
sed -i "3d" distros-deb.txt
Kjo do të heqë rreshtin # 3 nga distros-deb.txt dhe do ta ruajë atë.
Po sikur të dua një sërë vijash, që do të thotë të heq rreshtin # 3, por edhe # 4 dhe # 5? Për të arritur këtë ne vendosim diapazonin nga 3 në 5, domethënë:
sed -i "3,5d" distros-deb.txt
Dhe do të më tregojë vetëm debian dhe kubuntu
Pra, çfarë nëse unë dua të fshij nga rreshti 2 në atë të fundit, kur nuk i di linjat totale?
Thjesht përdorni simbolin e dollarit - »$
sed -i "2,$d" distros-deb.txt
Në rast se doni të eleminoni nga rreshti i parë në # 4, atëherë ne thjesht vendosim vlerën 1 në fillim:
sed -i "1,4d" distros-deb.txt
Kaq është pak a shumë, një këshillë mjaft e dobishme kur doni të shkruani skripte bash për të automatizuar detyrat dhe duhet të modifikoni dhe fshini rreshta në skedarët e konfigurimit. Për të modifikuar, mund të përdorim sed ose perl , dhe për të fshirë, ne tashmë e dimë se si ta bëjmë me sed.
të fala