如果它们与可变的特定模式匹配,我试图删除文件中的一堆行。
我正在尝试删除与 abc12、abc13 等匹配的行。
我尝试编写一个 C-shell 脚本,这是代码:
**!/bin/csh
foreach $x (12 13 14 15 16 17)
perl -ni -e 'print unless /abc$x/' filename
end**
这不起作用,但是当我使用没有变量的单行 (abc12) 时,它起作用了。
我不确定模式匹配是否有问题,或者是否还有其他我遗漏的地方。
最佳答案
是的,这是您使用单引号的事实。这意味着 $x
是按字面解释的。
当然,您这样做的效率也非常低,因为您要多次处理每个文件。
如果您想删除 abc12
到 abc17
的行,您可以一次性完成所有操作:
perl -n -i.bak -e 'print unless m/abc1[234567]/' filename
关于Perl 单行 : deleting a line with pattern matching,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33974230/