我試圖用命令行perl替換多行文件中的文本。我正在使用Ubuntu Natty。Perl命令行多行替換
下面是我的文本文件(稱爲的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和與之相匹配es文本文件中的所有內容,但由於某些原因,它在命令行上不能使用perl。
我希望得到一些幫助。
在此先感謝。
我不確定預期的結果應該是什麼。 – cornuz 2012-03-12 16:21:33
@cornuz我認爲這個問題很明顯。我說:「不是替換文件中的所有文本,[以下]就是我最終的結果......」這樣就可以很好地解釋它。同樣來自正則表達式,我認爲這似乎很清楚我需要什麼結果。 – 2012-03-12 18:02:24