Shell-script - kopieer tekst van het ene naar het andere bestand

Linux is een zeer robuust besturingssysteem, dat veel oefening en kennis vereist. Als je Linux echter regelmatig gaat gebruiken, wordt het verwerken van bestanden, kopiëren en het gebruik van shell-script heel gemakkelijk en ongecompliceerd. Als u problemen ondervindt bij het kopiëren van tekst van een bestand naar een ander bij gebruik van shell-script, lees dan het onderstaande artikel. Zelfs iemand die nieuw is in

Kwestie

Ik moet tekst kopiëren tussen een begin- en een eindpatroon van het ene bestand naar het andere.

Bijvoorbeeld,

Laten we zeggen dat ik een bestand heb met de volgende inhoud:

 hallo wereld1 hallo wereld2 hallo wereld3 hallo wereld4 hallo world5 piep 

Ik heb een shellscript nodig dat het volgende bestand kan produceren:

 hallo wereld2 hallo wereld3 hallo wereld4 hallo world5 piep 

Ik ken de regelnummers niet voor het bereik dat ik wil kopiëren, ik wil alleen het voorkomen van 'hallo wereld2' kopiëren naar het voorkomen van 'hallo wereld5' + 1 regel

Als je je afvraagt ​​wat ik hier probeer te doen, wil ik een threaddump op mijn machine uitvoeren met kill -3, maar de uitvoer hiervan gaat naar de standaarduitvoer die in mijn geval naar het jboss out-bestand met een veel andere logs erin. Dus ik wil dit script uitvoeren om de thread te dumpen naar een apart bestand zodra de kill is uitgevoerd. Onnodig te zeggen dat er misschien meer dan één thread dump in het jboss.out bestand is.

Oplossing

De eenvoudigste manier, als uw invoerbestand op /folder/somefile.txt staat,

 # Script lines.txt # Lees het invoerbestand in een stringvariabele. var str input; cat "/folder/somefile.txt"> $ input # Verwijder alles voor "hallo wereld2". stex "] ^ hello world2 ^" $ input> null # Alles verwijderen na "hallo world5n". stex "^ hello world5n ^ [" $ input> null # $ invoer heeft nu alleen het gewenste deel. Print het. echo $ invoer 

TheScript is in biterscripting (//www.biterscripting.com). Om te proberen, sla het script op als /Scripts/lines.txt, start biterscripting en voer de volgende opdracht in.

script lines.txt

Script kan ook rechtstreeks vanuit een ander programma of een andere shell worden gebeld, zoals

/biterScripting/biterScripting.exe lines.txt

Zorg ervoor dat u de juiste bestandslocatie gebruikt in plaats van /folder/somefile.txt. Let op de dubbele aanhalingstekens, ^, [en] in de syntaxis van de syntaxis van de stringtrekker. Voel je vrij om het script naar een andere taal te vertalen.

Notitie

Dank aan SenHu voor deze tip op het forum.

Vorige Artikel Volgende Artikel

Top Tips