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

差别

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

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
程序设计:perl:perl单行脚本 [2022/09/25 05:49]
112.13.112.38 已恢复为旧版 (2021/12/01 10:22)
程序设计:perl:perl单行脚本 [2022/12/07 17:18] (当前版本)
60.188.10.9 已恢复为旧版 (2022/05/21 21:55)
行 32: 行 32:
 常见命令选项: 常见命令选项:
 <code> <code>
- -l表示print每次都在输出回车+ -l 
 +    对输入内容自动chomp,对输出内容自动添加换行
  
--a表示用分隔符默认为空白,可以用-F/分隔符/指定)对每行进行分割+-a 
 +    对每行进行分割自动分隔模式,空格分隔$_并保存到@F中。相当于@F = split ”。分隔符默认为空白,可以用-F/分隔符/指定
  
--n表示每次自动读取文件的+-n 
 +    自动循环,相当于 while(<>) { 脚本; } 
 + 
 +-e 
 +    表示执行引号中的内容 (Linux下用单引号,windows下为双引号,且双引号中的双引号用\"表示) 
 + 
 +-F 
 +    /分隔符/ 表示在-a中使用分隔符分割 
 + 
 +-p  
 +    自动循环+自动输出,相当于 while(<>) { 脚本; print $_; }, -p 开关更适用于对文件进行的 完全处理,而 -n 开关更适用于 选择性文件处理,这样的处理只需打印特定数据. 
 + 
 +-0<数字> 
 +    (用8进制表示)指定记录分隔符($/变量),默认为换
  
--e表示执引号中的内容 (Linux下用单引号,windows下双引号,且双引号中的双引号用\"表示)+-00 
 +    段落模式,即以连续换行为分隔符
  
--F/分隔符/ 表示在-a中使用分隔符分割+-0777 
 +    禁用分隔符,即将整个文件作为一个记录
  
--p和 -n 一样,但是还会打印 $_ 内容+-i<扩展名> 
 +    原地替换文件,并将旧文件用指定扩展名备份。不指定扩展名则不备份。
  
--p 开关隐式地将 print $_ 语句插入到 -n 开关所产生的循环中.因此, -p 开关更适用于对文件进行的 完全处理,而 -n 开关更适用于 选择性文件处理,这样的处理只需打印特定数据. 
 </code> </code>
  
行 55: 行 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>  
行 146: 行 165:
  
  ===== 处理文本 =====  ===== 处理文本 =====
 +
 查找修改访问几天前 or 几天内的内容  查找修改访问几天前 or 几天内的内容 
 +
 <code>perl -le 'print for grep { 7 > -M } glob "*"'</code> <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单行脚本.1664056158.txt.gz
  • 最后更改: 2022/09/25 05:49
  • 112.13.112.38