【问题标题】:How do I remove a line that does not contain a specific character? [duplicate]如何删除不包含特定字符的行? [复制]
【发布时间】:2020-08-22 21:43:00
【问题描述】:

例如,我想删除纺织品中不包含字符“@”的所有线条

我已经尝试过像这样使用 sed

sed '/@/!d' data.txt

我错过了什么?这不应该工作吗?

【问题讨论】:

  • 我猜你错过了-ised -i '' '/@/!d' data.txt
  • 非常感谢!完美运行。
  • 我不认为bash 标签是相关的,不是吗?

标签: bash macos shell sed


【解决方案1】:

我更喜欢使用ed 而不是非标准的sed -i,特别是如果它需要便携:

printf "%s\n" "v/@/d" w | ed -s filename

这会删除不包含@的每一行,并将更改的文件保存回磁盘。

【讨论】:

    【解决方案2】:
    sed -n '/@/p' [file]
    
    • -n 禁止默认打印
    • /@/ 匹配@ 在线上的任意位置
    • p如果匹配则打印

    添加-i 以就地编辑文件(如果提供)。

    【讨论】:

      猜你喜欢
      • 2021-03-17
      • 1970-01-01
      • 2016-01-05
      • 2012-03-21
      • 2020-02-04
      • 2015-07-14
      • 2011-02-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多