我有一个带有列表的文件,称之为tbl.lst
:
a
b
c
d
e
我想创建一个输出文件,其中的项目用括号括起来并用逗号分隔。有人可以告诉我如何在 Perl 中做到这一点吗?
预期输出:
MYTABLES=(a,b,c,d,e)
我有一个带有列表的文件,称之为tbl.lst
:
a
b
c
d
e
我想创建一个输出文件,其中的项目用括号括起来并用逗号分隔。有人可以告诉我如何在 Perl 中做到这一点吗?
预期输出:
MYTABLES=(a,b,c,d,e)
perl -lne 'push @A, $_; END { print "MYTABLES=(", join(",", @A), ")";}' tbl.lst
给定输入文件tbl.lst
:
a
b
c
d
e
输出是:
MYTABLES=(a,b,c,d,e)
Perl 脚本中的每个空格都是可选的(但空格可能更清晰)。
该脚本将用作过滤器:读取文件并将结果打印到标准输出,如下所示:
./script file
开始了:
#!/usr/bin/perl
while (<>) {
s/\r|\n//g; # On any platform, strip linefeeds on any (other) platform
push @items, $_
}
print "MYTABLES=(";
while (@items) {
$item = shift @items;
print $item;
print @items ? "," : ")\n";
}
如果输入文件变得非常大,您可能希望避免将其读入列表,而是严格逐行工作。然后诀窍是在项目之前打印分隔符。
print "MYTABLES=";
while (<>) {
print $first_printed ? "," : "(";
s/\r|\n//g; # On any platform, strip linefeeds on any (other) platform
print;
$first_printed = 1;
}
print ")\n";
awk 'NR!=1{a=a","}{a=a$0}END{print "MYTABLES=("substr(a,0,length(a))")"}' your_file >output.txt
测试如下:
> cat temp
a
b
c
d
e
> awk 'NR!=1{a=a","}{a=a$0}END{print "MYTABLES=("substr(a,0,length(a))")"}' temp
MYTABLES=(a,b,c,d,e)