Perl newbie here ...寻求帮助重新格式化数据文件。
数据如下所示:
num:3460381591
num:1038198413
num:3380733973
我想将它设为一个字符串,然后在结肠后面跟^a
和^b
添加rec的每个开头,如下所示:
^anum:^b3460381591^anum:^b1038198413^anum:^b3380733973
有人可以告诉我该怎么做吗?谢谢。
答案 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。