[英]How to replace words in file in bash
我有一个包含以下内容的文件:
Blekota blaboli o koblihach.
Blanka je bl...
GEwI
er
我需要用xxxx
替换以Bl
或bl
开头的每个单词并将其保存到新文件中。 我试试这个,但它没有用。
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:]]*
匹配以Bl
或bl
开头的单词,后跟 0 个或多个字母。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.