【问题标题】:sed command to delete a line with contain more than 10 character which not start with 91sed 命令删除包含超过 10 个字符且不以 91 开头的行
【发布时间】:2017-07-09 06:49:44
【问题描述】:

我希望 sed 命令删除包含超过 10 个数字且不以 91 开头的行

我的文件内容是这样的

919876543210
789876543210
9012345678
12345678901
9865746321

并且需要这样的输出。

919876543210
9012345678
9865746321

我试过 awk 'length>=4' 1.txt | grep -v ^91

这会告诉我

789876543210
12345678901

【问题讨论】:

  • 如果您没有显示您尝试过的任何内容,StackOverflow 系统建议您否决您的问题并继续。
  • -E 可以与您的 sed 版本一起使用吗?
  • sed 版本 4.2.2
  • 这并没有真正回答问题,sed有不同的来源。

标签: sed


【解决方案1】:

你可以做什么:

  • 忽略所有以“91”开头的行,/^91/!
  • 否则删除至少 11 个字符的任何内容
    (假设您不关心数字、字母、空格之间的区别...),
    {/.........../d}

总共:

sed  '/^91/!{/.........../d}'

使用-E 会更优雅。

(我的 sed 是 GNU sed 版本 4.2.1)

【讨论】:

    【解决方案2】:

    用awk简单、清晰、便携、高效等:

    $ awk '/^91/ || length()<11' file
    919876543210
    9012345678
    9865746321
    

    【讨论】:

      猜你喜欢
      • 2016-05-21
      • 1970-01-01
      • 2012-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-19
      • 2017-11-04
      • 1970-01-01
      相关资源
      最近更新 更多