sed
staat voor stream-editor. Het is een op de opdrachtregel gebaseerde editor voor Linux. Populair gebruik van sed is voor het bewerken van bestanden als onderdeel van een automatiseringsscript in Linux, aangezien gebruikelijke editors actieve gebruikersinvoer vereisen en geen bestanden kunnen bewerken buiten de editorschermen. Sed wordt meestal gebruikt voor het zoeken en vervangen vanaf de opdrachtregel.
Dit type teksteditor kan ook worden gecategoriseerd als een niet-interactieve teksteditor.
Laten we enkele veelvoorkomende opties bekijken om bestanden te bewerken met Sed. We nemen het volgende bestand als voorbeeld:
$: cat test.txt Een snelle bruine hond sprong over de luie kat heen. Linux-besturingssysteem. Het bos bij mij in de buurt heeft zowel een kat als wolven.
Zoeken en vervangen
Om naar een tekenreeks in een bestand te zoeken en deze te vervangen door een andere tekenreeks, voert u het volgende uit:
sed -i "s/cat/fox/g" test.txt
Hier de -I
flag instrueert sed om de wijzigingen in het bestand te schrijven. Zonder deze vlag, sed
zal alleen het bestand met de gewijzigde string weergeven.
In de aanhalingstekens hebben we: s/kat/vos/g
. De s
is voor het zoeken en vervangen commando van sed
. Dan hebben we de string die moet worden doorzocht, namelijk: kat
. Dan de string om het te vervangen door, d.w.z. Vos
. Ten slotte hebben we de optionele G
, die instrueert sed
om alle voorkomens op alle regels van het bestand te vervangen. Zonder de G
, sed vervangt alleen het eerste voorkomen van kat
op elke lijn.
Regex kan hier ook worden gebruikt.
sed -i "s/f[a-z]*\./cat\./g"
Invoegen
Als u tekst wilt invoegen vóór een regel met een overeenkomende tekenreeks, gebruikt u:
sed -i "/cat/i Start:" test.txt
Hier, kat
is de gezochte string en Begin:
is de tekenreeks die moet worden ingevoerd vóór de regel waar de gezochte tekenreeks wordt gevonden.
Op dezelfde manier, om tekst na een regel in te voegen, gebruikt u:
sed -i "/fox/a End." test.txt
Verwijderen
Om een regel met een substring te verwijderen, gebruik je:
sed -i "/Linux/d" test.txt
Om een regel met regelnummer te wissen, bijv. de eerste regel, gebruik:
sed -i '1d' test.txt
Meerdere functies combineren
Om meerdere functies te combineren, bijv. zoeken en vervangen, verwijderen, in één opdracht, -e
vlag kan worden gebruikt.
sed -i -e "s/fox/cat/g" -e '2d' test.txt
? Proost!