程序设计:perl:perl单行脚本

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
程序设计:perl:perl单行脚本 [2022/09/21 22:50]
39.173.105.182 已恢复为旧版 (2022/05/10 14:31)
程序设计:perl:perl单行脚本 [2022/12/07 17:18] (当前版本)
60.188.10.9 已恢复为旧版 (2022/05/21 21:55)
行 1: 行 1:
 perl单行脚本一般用来提取文件中部分内容或者删除某些部分。使用简单方便,简单介绍下如何操作。 perl单行脚本一般用来提取文件中部分内容或者删除某些部分。使用简单方便,简单介绍下如何操作。
-因为大部分都使用windows,所以我们下面的实例以windows为主+因为大部分都使用windows,所以我们下面的实例以windows为主(Linux下请将"改',\"改")
  
 ====== perl的安装 ====== ====== perl的安装 ======
-windows:[[http://www.activestate.com/activeperl/downloads|下载地址]],下载5.16版本。\\+<WRAP center round important 60%> 
 +请注意:在windows下安装perl,无论是哪种方式,不要将其安装在含有中文或者空格的路径下,否则部分功能将不可用!!! 
 +</WRAP> 
 + 
 +===== windows: ===== 
 +Windows下可以安装ActivePerl或者StrawBerry Perl,下面分别介绍。 
 + 
 +====  ActivePerl ==== 
 +下载[[http://www.activestate.com/activeperl/downloads|ActivePerl]]的5.16版本,安装。\\ 
 +windows中安装完按win+r快捷键,输入cmd,回车,在弹出界面中输入以下行即可 
 + 
 +==== StrawBerry Perl ==== 
 +下载[[http://pan.baidu.com/share/link?shareid=1797695320&uk=856011220|StrawBerry Perl]] ,这个是绿色便携版,解压即可使用 <wrap info>推荐</wrap>\\ 
 +或者到官网上下载[[http://strawberryperl.com/releases.html|StrawBerry Perl]],<wrap important >请不要下载5.18版本或者5.10以前的版本</wrap>,防止新版本不稳定和版本过老。\\ 
 +如果是安装包,可以直接安装后使用\\ 
 +如果是绿色版,解压下载的文件(解压后约290M),点击<wrap hi>portableshell.bat</wrap>文件,即可与命令行一样使用 
 + 
 +===== Linux  =====
 Linux一般自带perl,不需要安装,不过版本可能比较低,可以下载新的版本。 Linux一般自带perl,不需要安装,不过版本可能比较低,可以下载新的版本。
  
-windows中按win+r快捷键,输入cmd,回车,在弹出界面中输入以下行即可+
  
 ====== perl脚本使用 ====== ====== perl脚本使用 ======
行 15: 行 32:
 常见命令选项: 常见命令选项:
 <code> <code>
- -l表示print每次都在输出回车+ -l 
 +    对输入内容自动chomp,对输出内容自动添加换行
  
--a表示用分隔符默认为空白,可以用-F/分隔符/指定)对每行进行分割+-a 
 +    对每行进行分割自动分隔模式,空格分隔$_并保存到@F中。相当于@F = split ”。分隔符默认为空白,可以用-F/分隔符/指定
  
--n表示每次自动读取文件的一行+-n 
 +    自动循环,相当于 while(<>) { 脚本; }
  
--e表示执行引号中的内容 (Linux下用单引号,windows下为双引号,且双引号中的双引号用\"表示)+-e 
 +    表示执行引号中的内容 (Linux下用单引号,windows下为双引号,且双引号中的双引号用\"表示) 
 + 
 +-F 
 +    /分隔符/ 表示在-a中使用分隔符分割 
 + 
 +-p  
 +    自动循环+自动输出,相当于 while(<>) { 脚本; print $_; }, -p 开关更适用于对文件进行的 完全处理,而 -n 开关更适用于 选择性文件处理,这样的处理只需打印特定数据. 
 + 
 +-0<数字> 
 +    (用8进制表示)指定记录分隔符($/变量),默认为换行 
 + 
 +-00 
 +    段落模式,即以连续换行为分隔符 
 + 
 +-0777 
 +    禁用分隔符,即将整个文件作为一个记录 
 + 
 +-i<扩展名> 
 +    原地替换文件,并将旧文件用指定的扩展名备份。不指定扩展名则不备份。
  
--F/分隔符/ 表示在-a中使用分隔符分割 
 </code> </code>
  
行 34: 行 72:
 print为输出,和c中printf类似。使用方式为:''print ""'' print为输出,和c中printf类似。使用方式为:''print ""''
  
 +windows下glob名字需要在引号里加上:
 +<code>BEGIN { @ARGV = map {glob} @ARGV }</code>
  ===== 去掉空白行 =====  ===== 去掉空白行 =====
  <code perl>perl -ne "print if /./" 输入文件名>输出文件名</code>    <code perl>perl -ne "print if /./" 输入文件名>输出文件名</code>  
行 124: 行 164:
 ''-F/,/'' 表示以逗号分隔 ''-F/,/'' 表示以逗号分隔
  
 + ===== 处理文本 =====
 +
 +查找修改访问几天前 or 几天内的内容 
 +
 +<code>perl -le 'print for grep { 7 > -M } glob "*"'</code>
 +
 +原地编辑文件,不备份,将文件中的aaa转为bbb
 +
 +<code>perl -pie  "s/aaa/bbb/" filename </code>
 +
 +用正则表达式修改所有某类型文件, ''BEGIN{@ARGV = map glob,@ARGV}'' 是windows下才需要添加的
 +
 +<code>perl  -i.bak  -pe "BEGIN{@ARGV = map glob,@ARGV} s/(windows)/$1&Linux/g"  *.txt</code>
  
  • 程序设计/perl/perl单行脚本.1663771846.txt.gz
  • 最后更改: 2022/09/21 22:50
  • 39.173.105.182