【问题标题】:Delete any lines starting with capital letter删除所有以大写字母开头的行
【发布时间】:2020-06-26 04:20:20
【问题描述】:

我有一个大文本文件,每行包含数千个单词。

如何删除所有以大写字母开头的行以及所有仅由单个字母开头的行。

A          -> To be deleted
a          -> To be deleted
abjurer
abkar
abkari
Abkhas     -> To be deleted
Abkhasian  -> To be deleted
ablach
ablactate
ablactation
B          -> To be deleted
b          -> To be deleted
Bounce     -> To be deleted
...
...

是否可以使用 Bash 来做到这一点。

谢谢。

【问题讨论】:

  • 绝对可以使用任何 awk/grep/sed。试一试,让我们知道您遇到的问题!
  • 您要删除以单个字母还是单个字符开头的行?编辑您的问题以显示仅包含数字 3 的行会发生什么情况。
  • 我投票决定将此问题作为离题结束,因为它只是要求编写代码而没有任何解决问题的尝试。
  • @Johnsyweb 显然这没关系,前几天我为此提出了一个元数据,他们几乎只是说你可以发布任何你想要的东西,并且在上面投反对票会阻止答案哈哈。跨度>
  • 我批准了这个答案。 @Johnsyweb,我要求在 python、java 或 Fortran 中执行此操作的代码,我明确要求使用 bash。这意味着我在 bash 中做了一些尝试。无论如何,谢谢大家。

标签: regex bash awk sed


【解决方案1】:

你可以使用:

grep -Ev '^([A-Z]|.$)' file 
abjurer
abkar
abkari
ablach
ablactate
ablactation

或者也可以使用 sed 来保存更改:

sed -i.bak -r '/^.$|[A-Z]/d' file

【讨论】:

    【解决方案2】:

    我会说:

    $ awk 'length($0)>1 && !/^[A-Z]/' file
    abjurer
    abkar
    abkari
    ablach
    ablactate
    ablactation
    

    这会检查字符串:

    • 长度超过 1 个字符。
    • 不以任何大写字母开头。

    您也可以关注hek2mgl's good suggestion 并使用!/^[[:upper:]]/' 而不是!/^[A-Z]/,以免依赖于您的语言环境。

    【讨论】:

    • 能否修改为仅捕获具有重复字符的行? aaaa aa bb bbbb
    • 这听起来与最初的问题完全不同,需要进一步的信息。你最好提出一个新问题来说明清楚。
    • 这将删除空行和包含单个非字母字符的行,并且在某些语言环境中将删除不以大写字母开头的行。
    【解决方案3】:
    awk '!/^([[:upper:]]|[[:alpha:]]$)/' file
    
    grep -Ev '^([[:upper:]]|[[:alpha:]]$)' file
    
    sed -r '/^([[:upper:]]|[[:alpha:]]$)/d' file
    

    【讨论】:

    • 你为什么使用upper | alpha
    • 注意alpha 后面的$^upper 删除以大写字母开头的行,^alpha$ 删除仅包含字母的行。
    • 哦,是的,错过了括号的位置。聪明的! :)
    【解决方案4】:

    我会为此使用sed

    sed '/^.$/d;/^[[:upper:]]/d' file
    

    这是由; 分隔的两个命令。第一个删除仅包含单个字母的行,第二个删除以大写字母开头的行。我真的鼓励你使用[[:upper:]] 而不是[A-Z] 让它独立于你的语言环境工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-18
      • 1970-01-01
      • 2021-09-25
      • 2022-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-08
      相关资源
      最近更新 更多