Như những người khác đã chỉ ra, sed và các công cụ dựa trên văn bản khác sẽ không hoạt động tốt nếu bất kỳ phần nào của tập lệnh trông giống như các nhận xét nhưng thực tế thì không. Ví dụ: bạn có thể tìm thấy một # bên trong một chuỗi, hoặc khá phổ biến $#
và ${#param}
.
Tôi đã viết một trình định dạng shell gọi là shfmt , có một tính năng để thu nhỏ mã. Điều đó bao gồm xóa bình luận, trong số những thứ khác:
$ cat foo.sh
echo $# # inline comment
# lone comment
echo '# this is not a comment'
[mvdan@carbon:12] [0] [/home/mvdan]
$ shfmt -mn foo.sh
echo $#
echo '# this is not a comment'
Trình phân tích cú pháp và máy in là các gói Go, vì vậy nếu bạn muốn một giải pháp tùy chỉnh, việc viết chương trình Go 20 dòng để xóa bình luận theo cách chính xác mà bạn muốn khá dễ dàng.