我有一个示例文本文件包含键值对的记录,但是第一行的第一个键是第二行的值,第三行的第二个键是第四行的值,
例如,在一个垂直线中的sample.conf
key1
value1
key2
value2
key3
value3
...
and so on
我需要将其转换为
key1 = value1
key2 = value2
or it may be
key1 key2.........
value1 value2.....
请帮助我,我是perl的初学者,我真的很感激答案。
答案 0 :(得分:5)
使用perl one liner;删除每个奇数行的换行符,并为每个偶数行添加=
perl -pe 'if ($. %2){ chomp }else{ s/^/ = / }' file
使用类似的方法,
perl -pe 'chomp; $_ .= " = ". <>' file
输出
key1 = value1
key2 = value2
key3 = value3
或使用脚本,
use strict;
use warnings;
use autodie;
open my $fh, "<", "file";
while (<$fh>) {
if ($. %2){ chomp } else { s/^/ = / }
print;
}
答案 1 :(得分:3)
use warnings;
use strict;
while (my $k = <DATA>) {
chomp $k;
my $v = <DATA>;
print "$k = $v";
}
__DATA__
key1
value1
key2
value2
key3
value3
答案 2 :(得分:2)
使用perl one-liner:
perl -pe 's/\n/ = / if $. % 2' file
切换:
-p
:为输入文件中的每个“行”创建一个while(<>){...; print}
循环。 -e
:告诉perl
在命令行上执行代码。 <强>代码强>:
s/\n/ = /
:用空格分隔的等号替换换行符...... if $. % 2
:仅限于奇数行。use strict;
use warnings;
use autodie;
#open my $fh, '<', "file"; # To replace below line when not testing
my $fh = \*DATA;
while (<$fh>) {
s/\n/ = / if $. % 2;
print;
}
__DATA__
key1
value1
key2
value2
key3
value3
输出:
key1 = value1
key2 = value2
key3 = value3