Shell Script - Kopírovanie textu z jedného súboru do druhého
Problém
Musím skopírovať text medzi vzorom začiatku a konca z jedného súboru do druhého.
Napríklad,
Povedzme, že mám súbor s nasledujúcim obsahom:
ahoj world1 hello world2 ahoj world3 hello world4 ahoj world5 pípnutie
Potrebujem skript typu shell, ktorý dokáže vytvoriť nasledujúci súbor:
ahoj world2 ahoj world3 hello world4 ahoj world5 pípnutie
Neviem čísla riadkov pre rozsah, ktorý chcem kopírovať, chcem len skopírovať z výskytu „hello world2“ k výskytu riadku „hello world5“ + 1
V prípade, že sa zaujímate o to, čo sa tu snažím robiť, chcem spustiť výpis o vlákne na mojom stroji pomocou funkcie kill -3, ale výstup z neho ide na štandardný výstup, ktorý je v mojom prípade nasmerovaný na súbor s jbossom, ktorý má veľa iných protokolov. Takže chcem spustiť tento skript, aby som extrahoval výpisy vlákien do samostatného súboru po vykonaní zabitia. Netreba dodávať, že v súbore jboss.out môže byť viac ako jeden výpis vlákien.
Riešenie
Najjednoduchší spôsob, ak je váš vstupný súbor v súbore /folder/somefile.txt,
# Script lines.txt # Prečítajte si vstupný súbor do premennej reťazca. var str input; cat "/folder/somefile.txt"> $ input # Odstrániť všetko pred "hello world2". stex "] ^ hello world2 ^" $ input> null # Odstrániť všetko po "hello world5n". stex "^ hello world5n ^ [" $ input> null # $ vstup má teraz len požadovanú časť. Vytlačte ho. echo $ input
TheScript je v biterscripting (//www.biterscripting.com). Ak chcete vyskúšať, uložte skript ako /Scripts/lines.txt, spustite biterscripting a zadajte nasledujúci príkaz.
skript lines.txt
Skript môže byť tiež volaný priamo z iného programu, alebo iného shellu, ako,
/biterScripting/biterScripting.exe lines.txt
Uistite sa, že namiesto súboru /folder/somefile.txt používate správne umiestnenie súboru. Všimnite si dvojité úvodzovky, ^, [a] v syntaxe príkazu extraktora reťazca. Neváhajte preložiť skript do akéhokoľvek iného jazyka.
Poznámka
Vďaka SenHu za tento tip na fóre.