8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

Perl 命令行多行替换

Raul Luna 1月前

31 0

我正在尝试使用命令行 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 工作。

我将非常感激您的帮助。

提前致谢。

帖子版权声明 1、本帖标题:Perl 命令行多行替换
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Raul Luna在本站《perl》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 谢谢。我会这么做的。看来双引号更适合我的具体情况,所以我暂时会坚持使用双引号,直到我弄清楚如何使用单引号。谢谢。

返回
作者最近主题: