用perl 从一个文件生成另一个文件(小case)

有一个文件叫sections, 如下:
hjj@ubuntu:~$ cat sections 
0xe08d4000 
0xe08d642c

由sections 文件,欲生成debug-sections 文件,期待如下:
hjj@ubuntu:~$ cat debug-sections 
add-symbol-file uxfs.ko 0xe08d4000 -s .exit.text 0xe08d642c

就是说从第一个文件中读取第一行,第二行内容,

添加其它一些信息,合成到一个新文件中。


用perl 解决该问题如下:


hjj@ubuntu:~$ cat merge.pl 
#!/usr/bin/perl -w
die "Usage $0 <file>" if @ARGV < 1;

open (FDR,"<",$ARGV[0]) || die $!;
while(<FDR>)
{
	chomp $_;
	push @lines, $_;
}
$result = "add-symbol-file uxfs.ko ". $lines[0] . "-s .exit.text " . $lines[1]."\n";
print $result;

运行结果:
hjj@ubuntu:~$ ./merge.pl sections 
add-symbol-file uxfs.ko 0xe08b9000-s .exit.text 0xe08bb42c


用SED 解决更加简单, 我从csdn 上求来的!

echo "add-symbol-file uxfs.ko `sed -n '1 p' sections`  -s .exit.text `sed -n '2 p' sections`" > debug-sections 


sed 还是复杂了一些,不实用。 用awk 才具有实用价值

$ cat sections |awk '{a[NR]=$0} END{print "add-symbol-file uxfs.ko "a[1], " -s .exit.text "a[2], "\n"}'

结果:
add-symbol-file uxfs.ko 0xe08d4000   -s .exit.text 0xe08d642c

数据导入及打印输出一气呵成。思路清楚!


你可能感兴趣的:(用perl 从一个文件生成另一个文件(小case))