Menjalankan skrip secara otomatis untuk membaca informasi tertentu dari file .txt? (Perl Script, atau sarankan)

Skenario saya: File teks akan terus masuk ke dalam folder, saya perlu mendeteksi file teks baru, dan membaca informasi tertentu darinya, misalnya formatnya (kata : info, ATAU kata dan di bawahnya ada kolom info, dll). Dan, proses ini harus terus berjalan.

Masalah: Bagaimana cara melakukan ini, saya kira menggunakan perl scipt, tapi ke mana harus melanjutkan dari sana?, Saya mendapatkan ide, dan juga bantuan di internet, tapi saya pikir menanyakannya di sini mungkin membuat pikiranku lebih jernih.

Mohon bantuannya, mohon sarankan jalan untuk melakukan ini.

Salam, Chirayu


person Chirayu    schedule 31.03.2011    source sumber


Jawaban (3)


Hal pertama: Anda menginginkan proses daemon, jadi Anda mungkin ingin melihat Proc::Daemon.

Hal kedua, Anda perlu membaca & mengurai file Anda. Menguraikannya, tergantung pada formatnya, dan pertanyaan Anda tidak begitu jelas.

Terakhir, Anda mungkin ingin mempertimbangkan untuk memindahkan file yang baru terdeteksi (atau mengganti namanya) saat memprosesnya, lalu (mungkin) menghapusnya setelah diproses. Hal ini tergantung pada kebutuhan yang Anda miliki. Alternatifnya, Anda mungkin ingin memindahkan file yang baru terdeteksi ke direktori arsip setelah memprosesnya.

person MarcoS    schedule 31.03.2011
comment
terima kasih telah membalas terlebih dahulu. Saya belum pernah melakukan ini sebelumnya, jadi saya sedang dalam perbaikan..bukan orang yang membuat skrip. Saya melihat proses Daemon yang Anda daftarkan, dan ingin mengatakan, saat membaca dan mengurai file, bayangkan file teks penuh dengan kata kunci, dan saya harus mengurai informasi yang tercantum di bawah kata kunci itu, hingga kata kunci lain ditemukan dan hal yang sama harus diselesaikan. - person Chirayu; 31.03.2011
comment
@Chirayu: tentang penguraian file, dan memproses setiap baris dan kata, Anda merasa berguna membaca Contoh Bab 8: Isi File dari Perl Cookbook. Anda juga dapat menemukan banyak contoh di Web. Ketika Anda memiliki beberapa kode, Anda mungkin ingin mempostingnya, dan orang-orang di SO dapat membantu Anda lebih lanjut. - person MarcoS; 31.03.2011

Salah satu pendekatannya adalah dengan memiliki proses Perl yang secara teratur (katakanlah setiap 5 detik, setiap 5 menit atau setiap 5 jam, sebenarnya panggilan Anda) memindai direktori tersebut dan segera setelah file teks baru muncul, memunculkan proses anak yang memprosesnya.

Proses anak mungkin berupa skrip Perl lain yang mendapatkan nama file teks sebagai argumennya dan yang membaca file tersebut, mendeteksi kata yang Anda sebutkan dan kemudian mengekstrak informasi yang Anda minati (dan kemudian melakukan apa pun yang Anda anggap perlu dengan informasi itu ).

Hal yang harus diperhatikan adalah apa yang harus dilakukan dengan file teks setelah diproses. Apakah mereka seharusnya tetap tinggal? Kemudian Anda perlu melacak mana yang telah Anda proses, sehingga tidak diproses lagi jika proses master Anda (yang memindai direktori dan menelurkan turunan Perl) harus dimulai ulang (karena crash atau restart yang disengaja).

Jika file teks seharusnya hilang setelah diproses, maka saya berasumsi sebaiknya membiarkan anak-anak menghapusnya setelah selesai atau membiarkan proses master menghapusnya asalkan proses master selalu menunggu anak-anak selesai. sebelum terus berjalan. Kelemahan dari proses master yang menunggu untuk diselesaikan oleh anak-anak adalah bahwa anak-anak tersebut kemudian tidak dapat dijalankan secara paralel tetapi harus dijalankan dalam urutan yang ketat (tidak perlu ada kekurangannya tergantung pada situasi Anda).

(Jika Anda memiliki proses master yang selalu menunggu proses anak berjalan, Anda sebenarnya dapat melewatkan proses anak sama sekali dan membuat subrutin dalam program master yang membaca dan memproses file teks).

Deskripsi tingkat tinggi tapi semoga membantu.

person IllvilJa    schedule 31.03.2011

Apa sistem operasi yang Anda gunakan?

Di Windows, Anda dapat menggunakan Win32::ChangeNotify dan di Linux, Anda dapat menggunakan Linux::Inotify2 untuk diberitahu tentang perubahan pada konten direktori.

Skrip Anda cukup menunggu untuk diberi tahu dan mengambil tindakan saat diberi tahu alih-alih melakukan polling terhadap konten direktori yang akan membuang-buang sumber daya atau berpotensi melewatkan beberapa perubahan.

person Sinan Ünür    schedule 31.03.2011
comment
Ya, saya sedang memikirkan untuk menyimpulkan hasil jajak pendapat saja, tetapi saya membaca apa yang Anda sarankan..terima kasih banyak telah membalas di antara keduanya. Ingin bertanya, bagaimana cara mengurai file teks untuk banyak kata kunci dan informasi? (Saya bukan orang yang suka membuat skrip, jadi maaf karena mengajukan pertanyaan yang mungkin dianggap bodoh). - person Chirayu; 31.03.2011