perl有助于连接记录和插入字符

时间:2010-10-14 23:47:47

标签: perl

Perl newbie here ...寻求帮助重新格式化数据文件。

数据如下所示:

num:3460381591 
num:1038198413 
num:3380733973

我想将它设为一个字符串,然后在结肠后面跟^a^b添加rec的每个开头,如下所示:

^anum:^b3460381591^anum:^b1038198413^anum:^b3380733973

有人可以告诉我该怎么做吗?谢谢。

3 个答案:

答案 0 :(得分:3)

如果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

答案 1 :(得分:2)

my $str = '';

open FILE, "file";
while (<FILE>) {
    chomp;
    my ($k, $v) = split /:/;
    $str .= "^a$k:^b$v";
}
close FILE;

print "$str\n";

答案 2 :(得分:2)

一种简单的方法:

#!/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