【问题标题】:Delete all words with ONLY & JUST 2 capital letters删除所有只有两个大写字母的单词
【发布时间】:2014-11-23 09:27:17
【问题描述】:

早安,

我想知道如何删除所有只有两个大写字母的单词。

到目前为止我已经完成了:

sed 's/[A-Z][A-Z]//g'

输入

AB, cd, EFG, hIJk, L, mnoPQ, rSt, UVxy

输出

, cd, EFG, hIJk, L, mnoPQ, rSt, UVxy

提前感谢任何线索

【问题讨论】:

  • 那是否包括“hIJk”?
  • @salparadise,请看更新
  • “AB, cd, EFG, hIJk, L, mnoPQ, rSt”有可能吗?即逗号前的两个大写字母。
  • @MandarShinde,请看更新

标签: bash awk sed grep


【解决方案1】:

你快到了。只需将单词边界添加到正则表达式的两侧即可:

sed 's/\b[A-Z][A-Z]\b//g'

更新:(由用户 CodeGnome 建议)

要使这项工作在 OS X 等 BSD 系统上工作,您需要更改单词边界并使用 -E 标志调用 sed。例如:

sed -E 's/[[:<:]][A-Z][A-Z][[:>:]]//g'

【讨论】:

  • 非常感谢您抽出宝贵时间,您是对的,您刚刚向我展示了 sed 的一些新内容。祝你有美好的一天(:
  • 我的荣幸。实际上它是regex 语法的一部分,并不特别属于sed
  • 这只适用于 GNU sed。它不适用于所写的 BSD sed。
  • 要使这项工作在像 OS X 这样的 BSD 系统上工作,您需要更改单词边界并使用 -E 标志调用 sed。例如:sed -E 's/[[:&lt;:]][A-Z][A-Z][[:&gt;:]]//g'
  • 继续添加它。我宁愿看到你有一个全面的答案。很高兴为您提供帮助!
【解决方案2】:
echo "AB, cd, EFG, hIJk, L, mnoPQ, rSt, UVxy" | \
 sed 's/.*/ & /;s/\([^a-zA-Z]\)[A-Z]\{2\}\([^A-Za-z]\)/\1\2/g;s/.\(.*\)./\1/'

应该为 posix 版本解决问题(--posix 在 GNU sed 上)

【讨论】:

    【解决方案3】:

    这可能对你有用(GNU sed):

    sed 's/\<[A-Z][A-Z]\>//g' file
    

    很可能适用于 sed 的所有变体。

    【讨论】:

      【解决方案4】:

      怎么样:

      echo "AB, cd, EFG, hIJk, L, mnoPQ, rSt, UVxy" | sed  's/^[A-Z][A-Z]\([^A-Z]\)/\1/' |sed 's/\([^A-Z]\)[A-Z][A-Z]$/\1/' |sed  's/\([a-z0-9]\)[A-Z][A-Z]\([a-z0-9]\)/\1\2/g'
      

      输出是

      、cd、EFG、hk、L、mnoPQ、rSt、UVxy

      【讨论】:

      • 非常感谢您抽出宝贵时间。它有效:D。唯一的“但是”是您的提议不切实际。祝你有美好的一天:)
      【解决方案5】:

      红宝石单线

      echo 'AB, cd, EFG, hIJk, L, mnoPQ, rSt, UVxy' |
      ruby -ne 'puts $_.split(?,).
                map(&:strip).
                reject { |word| word =~ /\A\p{Upper}{2}\z/ }.
                join ", "'
      

      结果

      cd, EFG, hIJk, L, mnoPQ, rSt, UVxy
      

      【讨论】:

      • 非常感谢您花时间向我展示 ruby​​ 的工作原理。但你不是第一个。祝你有美好的一天(:
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-10
      • 1970-01-01
      • 2019-03-04
      • 2017-06-20
      • 1970-01-01
      • 2020-07-16
      相关资源
      最近更新 更多