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 的主要内容,如果未能解决你的问题,请参考以下文章

CSS 8 Premium One Line Css Tips

perl 替换一例

562. Longest Line of Consecutive One in Matrix

perl 和python 翻译序列

562. Longest Line of Consecutive One in Matrix

web crawling(plus6) more than one line