Ketika berhadapan dengan input yang berpotensi tidak bersih, saya suka melihat seluruh pekerjaan 'terbilang' baris demi baris untuk inspeksi visual sebelum saya menjalankannya (terutama ketika sesuatu yang merusak seperti membersihkan kotak surat orang).
Jadi yang saya lakukan adalah membuat daftar parameter (mis. Nama pengguna), memasukkannya ke file dengan mode satu-catatan-per-baris, seperti ini:
johndoe
jamessmith
janebrown
Lalu saya membuka daftar vim
, dan memotong-motongnya dengan mencari dan mengganti ekspresi sampai saya mendapatkan daftar perintah lengkap yang perlu dijalankan, seperti ini:
/bin/rm -fr /home/johndoe
/bin/rm -fr /home/jamessmith
Dengan cara ini jika regex Anda tidak lengkap, Anda akan melihat perintah apa yang akan memiliki masalah potensial (mis. /bin/rm -fr johnnyo connor
). Dengan cara ini Anda dapat membatalkan regex Anda, dan coba lagi dengan versi yang lebih andal. Nama mangling terkenal karena hal ini, karena sulit untuk mengurus semua kasus tepi seperti Van Gogh, O'Connors, St. Clair, Smith-Wesson.
Memiliki set hlsearch
berguna untuk melakukan ini vim
, karena akan menyoroti semua pertandingan, sehingga Anda dapat dengan mudah melihat jika tidak cocok, atau cocok dengan cara yang tidak disengaja.
Setelah regex Anda sempurna dan menangkap semua case yang dapat Anda uji / pikirkan, maka saya biasanya mengonversinya menjadi ekspresi sed sehingga dapat sepenuhnya otomatis untuk dijalankan lagi.
Untuk kasus di mana jumlah baris input mencegah Anda melakukan inspeksi visual, saya sangat merekomendasikan untuk mengulangi perintah ke layar (atau lebih baik, log) sebelum dieksekusi, jadi jika kesalahan keluar, Anda tahu persis perintah yang menyebabkan itu gagal. Kemudian Anda dapat kembali ke regex asli dan menyesuaikannya sekali lagi.
printf "foo bar\nbaz bat" | xargs echo whee
akan menghasilkanwhee foo bar baz bat
. Mungkin menambahkan opsi-L
atau-n
?