Shell Script - Menyalin teks dari satu file ke file lainnya
Isu
Saya perlu menyalin teks antara mulai dan pola akhir dari satu file ke yang lain.
Sebagai contoh,
Katakanlah saya punya file dengan konten berikut:
halo world1 halo world2 halo world3 halo world4 halo world5 beep
Saya memerlukan skrip shell yang dapat menghasilkan file berikut:
halo world2 halo world3 halo world4 halo world5 bip
Saya tidak tahu nomor baris untuk rentang yang ingin saya salin, saya hanya ingin menyalin dari terjadinya 'hello world2' ke terjadinya 'hello world5' + 1 baris
Jika Anda bertanya-tanya apa yang saya coba lakukan di sini, saya ingin menjalankan thread dump pada mesin saya menggunakan kill -3 tetapi output dari ini pergi ke output standar yang dalam kasus saya diarahkan ke file jboss out yang memiliki banyak log lain di dalamnya. Jadi saya ingin menjalankan skrip ini untuk mengekstrak kesedihan thread ke file terpisah setelah kill telah dieksekusi. Tidak perlu dikatakan, mungkin ada lebih dari satu dump thread di file jboss.out.
Larutan
Cara paling sederhana, jika file input Anda di / folder / filefile.txt,
# Script lines.txt # Baca file input menjadi variabel string. input var str; cat "/folder/somefile.txt"> $ input # Hapus semuanya sebelum "hello world2". stex "] ^ hello world2 ^" $ input> null # Hapus semuanya setelah "hello world5n". stex "^ hello world5n ^ [" $ input> null # $ input sekarang hanya memiliki porsi yang diinginkan. Cetak ini. input $ echo
TheScript ada dalam biterscripting (//www.biterscripting.com). Untuk mencoba, simpan skrip sebagai /Scripts/lines.txt, mulai biterscripting dan masukkan perintah berikut.
skrip lines.txt
Script juga dapat dipanggil langsung dari program lain, atau shell lain, seperti,
/biterScripting/biterScripting.exe lines.txt
Pastikan Anda menggunakan lokasi file yang benar, bukan /folder/somefile.txt. Perhatikan tanda kutip ganda, ^, [dan] dalam sintaksis perintah string extractor. Jangan ragu menerjemahkan naskah ke bahasa lain mana pun.
Catatan
Terima kasih kepada SenHu untuk tip ini di forum.