Pertanyaan Pencarian baris perintah Perl dan ganti dengan beberapa ekspresi


Saya menggunakan Perl untuk mencari dan mengganti beberapa ekspresi reguler: Ketika saya menjalankan perintah berikut, saya mendapatkan kesalahan:

prompt> find "*.cpp" | xargs perl -i -pe 's/##(\W)/\1/g' -pe 's/(\W)##/\1/g'
syntax error at -e line 2, near "s/(\W)##/\1/g"
Execution of -e aborted due to compilation errors.
xargs: perl: exited with status 255; aborting

Memiliki banyak -e valid dalam Perl, lalu mengapa ini tidak berfungsi? Apakah ada solusi untuk ini?


14
2018-05-03 02:00


asal


Jawaban:


Beberapa -ediizinkan.

Anda kehilangan ';'

find "*.cpp" | xargs perl -i -pe 's/##(\W)/\1/g;' -pe 's/(\W)##/\1/g;'

Pernyataan Perl harus diakhiri dengan ;. Pernyataan akhir dalam blok tidak membutuhkan tanda titik koma yang diakhiri. Jadi, single -e tanpa ; akan berfungsi, tetapi Anda harus menambahkan ; ketika Anda memiliki banyak -e pernyataan.


31
2018-05-03 02:13