awk 如何更改一个单词但不是每个字母的实例

标签 awk

我编写了一个 AWK 程序来将 i 更改为 I 并将 awk 更改为 AWK。它可以工作,但它也会将每个包含 i 的单词更改为和一个 I。所以 writing 会变成 wrItIng.

如何让它只是将单词 i 更改为 I

这是我的程序:

'{gsub(/i/, "I");gsub(/awk/, "AWK");print}'

最佳答案

如果您使用的是 GNU awk ,支持egrep表达式,所以您可能想要使用单词边界 \<\> :

pax> echo "Know that i am alive" | awk '{gsub(/\<i\>/,"I");print}'
Know that I am alive

pax> echo "awk is good to gawk at" | awk '{gsub(/\<awk\>/,"AWK");print}'
AWK is good to gawk at

关于awk 如何更改一个单词但不是每个字母的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20067482/

相关文章:

sed - 使用 gawk/awk/sed 从多个文件中删除行

awk - 使用 awk 如何使用新行字符重新打印找到的模式?

linux - 如何删除关键字之前及其匹配字符串标记之前的行

linux - 读取子文件夹中的特定行并计算平均值

arrays - 动态填充多维 awk 数组

awk - 为什么 `awk NF=NF RS= OFS=,` 有效?

regex - awk - 解析字段中具有相同字符作为分隔符的文本

linux - 格式化 top 的批处理模式输出以进行绘图/绘图

linux - bash 脚本正确解释 awk

linux - 在 awk 中,为什么 ""和 "\n\n"对于 RS 参数的处理方式相同?