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
562. Longest Line of Consecutive One in Matrix