Perl one lines

Posted 生信学习之旅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Perl one lines 相关的知识,希望对你有一定的参考价值。

perl单行命令用一行命令处理文件,避免写一些简单的小程序,类似与sed/awk的操作。对于perl单行命令打算写一个系列,记录自己从零学perl单行命令的过程。




简单的文件操作

参数

-e 执行命令,必须加的参数

-p 逐行遍历文件,并对每行进行处理后打印

-n 逐行遍历文件

-l 对所有输入进行去掉换行符"\n"的处理,对所有输出添加换行符"\n"


1.在每行文件后添加字符

perl -pe '$_ .= "\n"' filename

# $_为输入的每一行的内容,.为连接符,这行命令的意思是在每行后面添加换行符,可以将换行符换成其他任意字符,将其加到每行末尾。


例如:现有test.txt 文件,内容为

perl one lines
hello,world!

执行命令

perl -pe '$_ .= "\n"' test.txt

结果为,即在每行末尾多加了一个换行符

perl one lines


hello,world!


也可以将换行符换成其他字符,例如

perl -pe '$_ .= "append\n"' test.txt

结果为

perl one lines
append
hello,world!
append


2.除了某些情况外,在每行文件后添加字符

perl -pe '$_ .= "\n" unless /^$/' filename

# 在每行末尾添加换行符,跳过空行
^$表示空行,^表示每行开头,$表示每行末尾


执行命令

perl -pe '$_ .= "\n" unless /^hello/' test.txt

结果为,即跳过hello开头的行,给剩下的行末添加换行符

perl one lines

hello,world!


3.对文件中的字符做些改变

perl -pe 's/perl/bbb/' filename

#将文件中的perl字符替换为bbb


执行命令

perl -pe 's/perl/bbb/' test.txt

结果为

bbb one lines
hello,world!


在进行替换时,可以加入一些后缀修饰符,/i /s /x /g等

/i  替换时不区分大小写

/s  匹配任何字符,包括换行符

/x  允许在模式里加入空白符

/g  替换所有匹配


例如执行

perl -pe 's/l/bbb/g' test.txt

结果为,将所有l字符替换成bbb

perbbb one bbbines
hebbbbbbo,worbbbd!


4.移除所有空行

perl -ne 'print unless /^$/' filename

或者

perl -lne 'print if length' filename

或者

perl -ne 'print if /\S/' filename

# \S 表示空白



参考资料

http://www.catonmat.net/blog/perl-one-liners-explained-part-one/

很棒的博客,很多学习资料,还有sed/awk命令学习的教程


PS:这个号是新申请的,用来记录我学习生信沿途的风光,没想到竟然有人关注,谢谢各位亲~~~



以上是关于Perl one lines 的主要内容,如果未能解决你的问题,请参考以下文章