Perl新手在這裏...尋找幫助重新格式化數據文件。perl幫助加入記錄並插入字符
的數據是這樣的:
num:3460381591
num:1038198413
num:3380733973
我想使它一個字符串,然後冒號這樣後REC每次啓動追加與^a
和^b
:
^anum:^b3460381591^anum:^b1038198413^anum:^b3380733973
燦有人告訴我如何做到這一點?謝謝。
Perl新手在這裏...尋找幫助重新格式化數據文件。perl幫助加入記錄並插入字符
的數據是這樣的:
num:3460381591
num:1038198413
num:3380733973
我想使它一個字符串,然後冒號這樣後REC每次啓動追加與^a
和^b
:
^anum:^b3460381591^anum:^b1038198413^anum:^b3380733973
燦有人告訴我如何做到這一點?謝謝。
my $str = '';
open FILE, "file";
while (<FILE>) {
chomp;
my ($k, $v) = split /:/;
$str .= "^a$k:^b$v";
}
close FILE;
print "$str\n";
如果Perl是不是必須的,
$ awk -F":" '{$1="^a"$1;$2="^b"$2}1' OFS=":" ORS="" file
^anum:^b3460381591^anum:^b1038198413^anum:^b3380733973
否則,
perl -F":" -ane 'chomp($F[1]);$F[0]="^a$F[0]";$F[1]="^b$F[1]"; print join ":", @F ' file
或者這個怎麼樣?
perl -ne 'chomp; s/^/^a/;s/:/:^b/;print' file
一個簡單的方法:
#!/usr/bin/perl -p
s/^(\w+):(.*?)\s*$/^a$1:^b$2/;
或者,如果你想編輯一個文件(和備份在保存了原始文件):
#!/usr/bin/perl -pi.BAK
s/^(\w+):(.*?)\s*$/^a$1:^b$2/;
你當然可以,也作爲一行內容運行:
perl -p -e 's/^(\w+):(.*?)\s*$/^a$1:^b$2/;' filename
perl -pi.BAK -e 's/^(\w+):(.*?)\s*$/^a$1:^b$2/;' filename
詳情請參閱perldoc perlrun。
我也喜歡這個。 – jdamae 2010-10-15 17:55:35
謝謝!效果很好。 – jdamae 2010-10-15 00:05:18
你能告訴我'。='在做什麼嗎? – jdamae 2010-10-15 00:06:43
「$ a。= $ b」是「$ a = $ a。$ b」的快捷方式 - 即將$ b附加到已經在$ a中的任何內容的末尾。 – 2010-10-15 00:10:08