加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl one-liner:删除带有模式匹配的行

发布时间:2020-12-15 21:47:18 所属栏目:大数据 来源:网络整理
导读:我试图删除文件中的一堆行,如果它们与一个可变的特定模式匹配. 我想删除与abc12,abc13等匹配的行. 我尝试编写一个C-shell脚本,这是代码: **!/bin/csh foreach $x (12 13 14 15 16 17) perl -ni -e 'print unless /abc$x/' filename end** 这不起作用,但是当
我试图删除文件中的一堆行,如果它们与一个可变的特定模式匹配.

我想删除与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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读