首页 > 解决方案 > 使用 shell 将一行中的第一个单词替换为另一个单词

问题描述

在我的文件(file1.txt)中,我有一行需要将第一个单词替换为另一个单词。

centralbank=14.4.0.4.SAMPLE=xyz/plugins/centralbank/patch144004

如果您看到上面的行,您可以看到centralbank在该行中重复。我想将第一个替换centralbankCentral Bank Int'l corp.

我的输出应该是

Central Bank Int'l corp=14.4.0.4.SAMPLE=xyz/plugins/clientpatch/centralbank/patch144004

我尝试了以下命令。但是,由于其中的单引号Cental Bank Int'l Corp没有给出

我想要的输出

 cat file1.txt | awk '{sub(/centralbank/,"Central Bank Int'l Corp")}1'

有人可以帮我解决这个问题。帮助将不胜感激

标签: shell

解决方案


您可以在sed没有g(全局)标志的情况下使用它:

s='centralbank=14.4.0.4.SAMPLE=xyz/plugins/centralbank/patch144004'
sed "s/centralbank/Central Bank Int'l corp/" <<< "$s"

Central Bank Int'l corp=14.4.0.4.SAMPLE=xyz/plugins/centralbank/patch144004

在中使用相同的概念awk

awk -v r="Central Bank Int'l corp" '{sub(/centralbank/, r)} 1' <<< "$s"

Central Bank Int'l corp=14.4.0.4.SAMPLE=xyz/plugins/centralbank/patch144004

推荐阅读