有什么方法可以将只有一个字符的字符串匹配到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 .
我想匹配所有只有一个字符的字符串(包括 +
或 -
)变成 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 .