我有如下文件,我想将第二行的数据,移动到文件的最后一行,如何实现?
# cat 1.txt
open LOG,">>./a.log";
print LOG "hahh,adfa,adfad";
close LOG;
这里我给出了两种方式:AWK和perl语言
# cat 1.txt |awk '/print/{a=1}/print/&&a{b=$0}END{print b}{if(!/print/)print $0}'
open LOG,">>./a.log";
close LOG;
print LOG "hahh,adfa,adfad";
# cat 1.txt |perl -ne 'if(/print/){$a=$_}END{print $a};if(!/print/){print $_}'
open LOG,">>./a.log";
close LOG;
print LOG "hahh,adfa,adfad";
上述代码结构简单进行解释:awk解析和perl一致,这里仅介绍perl
if(/print/){$a=$}:代表如果匹配到print,那么就将这行数据存储放到变量$a中
END{print $a};if(!/print/){print $}:这里其实是两部分
● 首先会先执行print $_且内容不包含print关键字,即每行数据循环到就会打印
● END{print $a}:代表所有的循环结束后,再打印一次变量$a