㈠ perl,正則表達式修改文件
usewarning;
my$xxxx;#設置初始變數
openxxx;#怎麼打開文件,自己看書吧
while(<$文件變數>)#這個就是遍歷文件的每一行
{
#使用正則表達式+if語句,思路:如果在開頭能匹配到任意字元,則輸出匹配到的內容。
$&if(/^./,$_);
#大概是這個意思,記不太清,$_默認變數,代表每一行的內容,你自己查小駱駝,書上這些基礎知識點都有,這道題是最基本的了
}
close$xxx;#關閉句柄
㈡ 如何在使用Perl來修改文本文件,要求在文件中出現字元('或,'時在中間插入一個N,即將其改為(N'或,N'
給一個比較完美的方案:
#!perl -w
use strict;
#AUTHOR: niejieqiang
while (<>) {
s/('.*?')/&rm($1)/ge;
print;
}
sub rm {
my $str = $_[0];
$str=~s/^/N/;
return $str;
}
㈢ 在linux下用perl修改文件
第一是,perl文件的第一行要指定perl解釋器的位置,典型的如下
#!/usr/bin/perl
第二是,perl文件的許可權要有可執行的許可權,可通過右鍵->屬性->許可權,勾選來添加可執行許可權(當然,你本身也應該有修改該文件許可權的許可權),也可以通過在命令行上執行chmod
+x
來添加執行許可權。
㈣ 用perl -pi -e命令對linux系統某文件夾中的所有文件進行內容替換操作,該操作怎麼恢復
操作系統沒有提供恢復功能,如果你有備份文件,可以使用備份的文件替換當前的文件,否則是沒有辦法恢復的。
因為LINUX文件系統為了最求較高效率,沒有對文件設置版本功能,修改文件並不自動保留修改前的內容。
㈤ 在Perl腳本語言下,如何修改文件內容
你這問題問的不清楚,你給的例子裡面也只處理了10轉28,而且目前你這個寫法,110也會被轉化為128,最重要的是,你這代碼完全不能修改你的文件,因為你foreach$kill(@new){$kill=~s/10/28/g;}這個只是對臨時變數$kill處理了。完全沒有對@new改動,所以再把new的內容寫到FILE2沒有意義。
openFILE1,"a.txt";
my@new=<FILE1>;
my$result=join'',@new;
$result=~s/10/28/gis;
closeFILE1;
openFILE2,">a.txt";
printFILE2$result;
closeFILE2;
測試了一下28替換10的,源文件內容:
# 102319482311010101a
# 11210948231a
# 112119482310b
執行之後,同一文件內容改變為:
# 282319482312828281a
# 11228948231a
# 112119482328b
你看看是不是能解答你的問題