Tôi chạy một số lệnh thay thế làm cốt lõi của tập lệnh tô màu cho maven . Một trong các sedlệnh sử dụng biểu thức chính quy hoạt động được tìm thấy trong shell như được thảo luận ở đây . Việc triển khai hiện tại (không hoạt động) có thể được tìm thấy ở đây .
Khi tôi đưa một trong các biến thể của lệnh vào tập lệnh, hành vi khác sẽ xảy ra:
Biến thể 1:
$ sed -re "s/([a-zA-Z0-9./\\ :-]+)/\1/g"
Điều chỉnh theo kịch bản:
-re "s/WARNING: ([a-zA-Z0-9./\\ :-]+)/${warn}WARNING: \1${c_end}/g" \
Lỗi: Trình bao xuất ra thông tin giống như khi tôi nhập $ sed. Kỳ lạ !?
Biến thể 2:
$ sed -e "s/\([a-zA-Z0-9./\\ :-]\+\)/\1/g"
Điều chỉnh theo kịch bản:
-e "s/WARNING: \([a-zA-Z0-9./\\ :-]\+\)/${warn}WARNING: \1${c_end}/g" \
Lỗi:
biểu thức sed: -e # 7, char 59: tham chiếu không hợp lệ \ 1 trên RHS của lệnh `s '
'và dấu ngoặc kép "được xử lý hơi khác nhau, đặc biệt là khi diễn giải $vars. Ví dụ: sudo sh -c "sed -r -i 's/(^.+_supplicant.conf)/\1${MTXT}/' /etc/network/interfaces"works, but: sudo sh -c 'sed -r -i "s/(^.+_supplicant.conf)/\1${MTXT}/" /etc/network/interfaces'does not.
-i(tùy chọn chỉnh sửa tại chỗ) với-re, kết quả là-ire(vì vậy điều đó-iđang sử dụngrephân đoạn làmSUFFIXđối số của nó và do đó chế độ regex mở rộng không được bật); thay đổi nó để-i -rekhắc phục sự cố.