我试图删除文件中的一堆行,如果它们与一个可变的特定模式匹配.
我想删除与abc12,abc13等匹配的行.
我尝试编写一个C-shell脚本,这是代码:
**!/bin/csh
foreach $x (12 13 14 15 16 17)
perl -ni -e 'print unless /abc$x/' filename
end**
Run Code Online (Sandbox Code Playgroud)
这不起作用,但是当我使用没有变量的单行程(abc12)时,它可以工作.
我不确定模式匹配是否有问题,或者是否还有其他我缺少的东西.
Sob*_*que 12
是的,这是你使用单引号的事实.这意味着$x正在按字面解释.
当然,你也这样做的效率非常低,因为你多次处理每个文件.
如果您想删除线条abc12,abc17可以一次性完成:
perl -n -i.bak -e 'print unless m/abc1[234567]/' filename
Run Code Online (Sandbox Code Playgroud)