如何替换 bash 文件中的单词

How to replace words in file in bash

我有一个包含以下内容的文件:

Blekota blaboli o koblihach.
Blanka je bl...
GEwI
er

我需要将每个以 Blbl 开头的单词替换为 xxxx 并将其保存到新文件中。我试过了,但是没有用。

while read line; 
do pokus="${line//[Bl|bl].* /xxxx}" 
echo $pokus
done < "$TEXT" > "$TEXT".new

期望的输出是:

xxxx xxxx o koblihach. 
xxxx je xxxx...
GEwI
er

请问我做错了什么?

这可以使用 sed 命令完成:

sed 's/\<[Bb]l[[:alpha:]]*/xxxx/g' file

xxxx xxxx o koblihach.
xxxx je xxxx...
GEwI
er

此处 \<[Bb]l[[:alpha:]]* 匹配以 Blbl 开头后跟 0 个或多个字母的单词。

第一个解决方案:使用awkgsub函数替换所有从[开始的字段=14=] OR bl 然后它将分配给 xxxx.

awk '{gsub(/(^[Bb]l|\<[Bb]l)[^[:space:]]+/,"xxxx")} 1' Input_file


第二个解决方案: 使用 awk 你可以尝试以下。简单的解释是遍历每一行的每个字段,然后检查条件是否以 Blbl 开头,然后将其分配给 xxxx,然后打印 edited/non-edited 行。

awk '{for(i=1;i<=NF;i++){if($i~/^[Bb]l/){$i="xxxx"}}} 1' Input_file