有什么方法可以将只有一个字符的字符串匹配到sed中的字符'X'?

Is there any way to match a string with only one character into character 'X' in sed?

我想匹配所有只有一个字符的字符串(包括 +-)变成 X 但每当我 运行它:

Xone     X
Xtwo     X
Xthree   X

这是我应该 运行 使用的文件:

Cone      A-
Ctwo      D
Cthree    C+

这是我一直在处理的代码:

code.sed

#!/bin/sed
s/[A-D][+-]/X/
s/[A-D]/X/

期望的输出:

Cone      X
Ctwo      X
Cthree    X

使用 GNU sed,您可以使用

 sed -E 's/\b[[:upper:]]\b[+-]?/X/g'

详情:

  • -E 启用 POSIX ERE 语法
  • \b - 单词边界
  • [[:upper:]] - 大写字母
  • \b - 单词边界
  • [+-]? - 可选的 +-.

看到一个 online demo:

s='Cone      A-
Ctwo      D
Cthree    C+'
sed -E 's/\b[[:upper:]]\b[+-]?/X/g' <<< "$s"

输出:

Cone      X
Ctwo      X
Cthree    X

使用您展示的示例,您能否尝试在 GNU awk 中编写和测试以下内容awk

awk '{gsub(/\<[A-Z]\>[-+]?/,"X")} 1' Input_file

解释: 只需全局替换大写字母(在其前面放置单词边界)后跟可选的 + 或 - 与当前行中的 X .