繁体   English   中英

如何在 bash 中替换文件中的单词

[英]How to replace words in file in bash

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

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

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

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

所需的 output 是:

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

请问我做错了什么?

第一种解决方案:使用 awk 的gsub awk替换从Bl OR bl开始的所有字段,然后将其分配给xxxx

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


第二种解决方案:使用awk您可以尝试以下操作。 简单的解释是遍历每行的每个字段,然后检查条件是否以Bl OR bl开头,然后将其分配给xxxx ,然后打印已编辑/未编辑的行。

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

这可以使用sed命令完成:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM