Script UNIX ke LPAD memperbarui permintaan dalam file cat


0

Saya ingin skrip yang akan membuka data file teks dan menulis permintaan pembaruan untuk file tersebut dan menyimpannya dalam file SQL yang akan dieksekusi melalui cron. Saya telah menyiapkan perintah tetapi penulisan kueri pembaruan dalam RPAD Di bawah ini diberikan adalah contoh data & perintah:

text file data : cat file.txt
123456789
234567891
345678912
456789123

Perintah:

cat file.txt | sed 's / $ / perbarui bidang set tabel di mana file_number = "file.txt" /'> file1.sql

OUTPUT saat ini:

123456789update table set field where file_number=
234567891update table set field where file_number=
345678912update table set field where file_number=
456789123update table set field where file_number=

OUTPUT yang diharapkan:

update table set field where file_number='123456789';
update table set field where file_number='234567891';
update table set field where file_number='345678912';
update table set field where file_number='456789123';

Jawaban:


0

Mungkin ada pendekatan yang lebih elegan (namun, semua itu ada di pikiran saya sekarang), jadi mari kita berpegang teguh pada itu sed.

  • Mengapa perintah Anda tidak berfungsi seperti yang Anda harapkan?

    $cocok dengan akhir baris , itu sebabnya update table ...string Anda ditempatkan di akhir setiap baris.

  • Bagaimana cara meningkatkannya?

    1. Anda tidak perlu cat; sedmengambil file sebagai argumen juga.
    2. Tentukan seluruh baris sebagai pola yang cocok ( .*cocok dengan semuanya, lampirkan dalam tanda kurung untuk referensi:\(.*\)
    3. Gunakan string perintah sql sebagai pengganti dan letakkan tanda referensi yang \1sesuai:

      sed "s|\(.*\)|update table set field where file_number=\'\1\';|" file.txt > file.sql

      memproduksi

      update table set field where file_number='123456789';
      update table set field where file_number='234567891';
      update table set field where file_number='345678912';
      update table set field where file_number='456789123';
      
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.