Tôi đang cố gắng thay thế văn bản trong một tệp nhiều dòng bằng cách sử dụng dòng lệnh perl. Tôi đang sử dụng Ubuntu Natty.Dòng lệnh Perl nhiều dòng thay thế
Dưới đây là nội dung của tập tin văn bản của tôi (gọi tắt là test.txt):
[mysqld]
#
# * Basic Settings
#
#
# * IMPORTANT
# If you make changes to these settings and your system uses apparmor, you may
# also need to also adjust /etc/apparmor.d/usr.sbin.mysqld.
#
user = mysql
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
skip-external-locking
Dưới đây là lệnh perl của tôi:
perl -i -pe "s/(\[mysqld\][^\^]+)/\1\nsometext/g" test.txt
Tuy nhiên, thay vì thay thế tất cả các văn bản trong tập tin , dưới đây là những gì tôi kết thúc với:
[mysqld]
sometext#
# * Basic Settings
#
#
# * IMPORTANT
# If you make changes to these settings and your system uses apparmor, you may
# also need to also adjust /etc/apparmor.d/usr.sbin.mysqld.
#
user = mysql
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
skip-external-locking
#
Tôi đã thử Regex trong RegexBuddy cho Perl và khớp với es tất cả mọi thứ trong tập tin văn bản, nhưng đối với một số lý do nó không hoạt động bằng cách sử dụng perl trên dòng lệnh.
Tôi đánh giá cao một số trợ giúp.
Xin cảm ơn trước.
Tôi không chắc chắn kết quả mong đợi sẽ là gì. – cornuz
@cornuz Tôi nghĩ đó là điều hiển nhiên từ câu hỏi. Tôi nói "thay vì thay thế tất cả các văn bản trong tập tin, [sau đây] là những gì tôi kết thúc với ..." do đó, khá nhiều giải thích nó. Cũng từ biểu thức chính quy, tôi nghĩ nó có vẻ khá rõ ràng về kết quả mà tôi yêu cầu. –