Я пытаюсь заменить текст в многострочном файле с помощью командной строки perl. Я использую Ubuntu Natty.Perl command line multi-line replace
Ниже содержание моего текстового файла (так называемый 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
Ниже моя команда Perl:
perl -i -pe "s/(\[mysqld\][^\^]+)/\1\nsometext/g" test.txt
Однако, вместо того, чтобы заменить весь текст в файле ниже, что я в конечном итоге с:
[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
#
Я попытался Regex в RegexBuddy для Perl и его соответствия все в текстовом файле, но по какой-то причине он не работает с использованием perl в командной строке.
Буду признателен за помощь.
Заранее спасибо.
Я не уверен, каким должен быть ожидаемый результат. – cornuz
@cornuz Я думаю, что это видно из вопроса. Я сказал: «Вместо того, чтобы заменить весь текст в файле, [следующее] - это то, в чем я заканчиваю ...», так что это в значительной степени объясняет это. Кроме того, из регулярного выражения я считаю, что кажется довольно ясным, какой результат мне нужен. –