Shell Script - Kopiera text från en fil till en annan
Problem
Jag måste kopiera text mellan en start och ett slutmönster från en fil till en annan.
Till exempel,
Låt oss säga att jag har en fil med följande innehåll:
hej world1 hej world2 hej world3 hej world4 hej world5 pip
Jag behöver ett skalskript som kan producera följande fil:
hej world2 hej world3 hej world4 hej world5 pip
Jag vet inte linjenummer för det intervall jag vill kopiera, jag vill bara kopiera från förekomsten av "hej world2" till förekomsten av "hej world5" + 1 linje
Om du undrar vad jag försöker göra här vill jag köra en gängdump på min maskin med kill-3 men utgången av detta går till standardutgång som i mitt fall riktas till jboss-filen som har en många andra loggar i den. Så jag vill köra det här skriptet för att extrahera tråddumparna i en separat fil när döden har utförts. Det kan naturligtvis finnas mer än en tråddump i filen jboss.out.
Lösning
Det enklaste sättet, om din inmatningsfil är på /folder/somefile.txt,
# Skript lines.txt # Läs inmatningsfilen i en strängvariabel. var str input cat "/folder/somefile.txt"> $ input # Ta bort allt före "hej world2". stex "] ^ hej world2 ^" $ input> null # Ta bort allt efter "hej world5n". stex "^ hej world5n ^ [" $ input> null # $ input har nu bara den önskade delen. Skriv ut det. echo $ input
TheScript finns i bitskrivning (//www.biterscripting.com). För att försöka spara scriptet som /Scripts/lines.txt, starta biterscripting och ange följande kommando.
script lines.txt
Script kan också kallas direkt från ett annat program, eller ett annat skal, som,
/biterScripting/biterScripting.exe lines.txt
Se till att du använder rätt filplats istället för /folder/somefile.txt. Notera de dubbla citaten, ^, [och] i stränguttagskommandotyntaxen. Gärna översätta manuset till något annat språk.
Notera
Tack till SenHu för detta tips på forumet.