一行perl程序,能做那些事(不断更新中)
博客专区 > holelulu 的博客 > 博客详情
一行perl程序,能做那些事(不断更新中)
holelulu 发表于4年前
一行perl程序,能做那些事(不断更新中)
  • 发表于 4年前
  • 阅读 121
  • 收藏 3
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

参考地址: http://www.ppurl.com/2013/12/perl-one-liners.html  

1、文件关键字替换

yang@yang :~/src$ cat log.txt  
huan
huan
huan
yang@yang :~/src$ perl -pi -e 's/huan/yang/g' log.txt     #参数说明: -p  按行执行   -i  把运行结果写入文件中 -e 脚本语句直接输入   
yang@yang :~/src$ cat log.txt  
yang
yang
yang
yang@yang :~/src$ 


yang@yang :~/src$ ls log*  
log.txt
yang@yang :~/src$ perl -pi_bak -e 's/yang/huan/g' log.txt    # 对修改的文件进行备份 

yang@yang :~/src$ ls log*  
log.txt  log.txt_bak



perl -pi -e 's/you/me/g' file1 file2 file3  #同时对多个文件关键字替换 




yang@yang :~/src$ cat log.txt
you
you me  
you me
you
yang@yang :~/src$ perl -pi -e 's/you/me/g if /me/' log.txt    #首先 if /me/  判断当前行是否存在关键字 “me”  ,如果存在则进行替换 s/you/me/g  ;
yang@yang :~/src$ cat log.txt
you
me me  
me me
you
yang@yang :~/src$


yang@yang :~/src$ cat log.txt
you
you 11  
you 11
you
yang@yang :~/src$ perl -pi -e 's/you/number/g if /\d/' log.txt   # 对关键字判断可以使用正则表达式 \d 任意数字[0-9]  \w 任意单词字符[ 0-9a-zA-Z]  \W相反  \s 空白字符[\ \t \n \r]  \S 相反
yang@yang :~/src$ cat log.txt
you
number 11  
number 11
you
yang@yang :~/src$ 


yang@yang :~/src$ perl -ne 'print "$. $_" ' log.txt   # 输出行号  $.  特殊变量代表行号
1 you
2 you
3 number  
4 number


yang@yang :~/src$ cat log.txt  
2 2 2 2
3 3 3 3
yang@yang :~/src$ perl -MList::Util=sum -alne 'print sum @F ' log.txt   # -M 调用模块 -a 参数自动分割行赋给@F数组  -l 参数自动换行
8
12
yang@yang :~/src$


  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 0
博文 16
码字总数 5585
×
holelulu
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: