我正在尝试使用命令行 perl 替换多行文件中的文本。我使用的是 Ubuntu Natty。下面是我的文本文件(名为 test.txt)的内容:[mysqld]## * 基本设置### * IMP...
我正在尝试使用命令行 perl 替换多行文件中的文本。我正在使用 Ubuntu Natty。
以下是我的文本文件(名为 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
#
我尝试了 RegexBuddy 中用于 Perl 的 Regex,它与文本文件中的所有内容匹配,但由于某种原因,它无法在命令行上使用 perl 工作。
我将非常感激您的帮助。
提前致谢。