如何替换 bash 文件中的单词
How to replace words in file in bash
我有一个包含以下内容的文件:
Blekota blaboli o koblihach.
Blanka je bl...
GEwI
er
我需要将每个以 Bl
或 bl
开头的单词替换为 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:]]*
匹配以 Bl
或 bl
开头后跟 0 个或多个字母的单词。
第一个解决方案:使用awk
的gsub
函数替换所有从[开始的字段=14=] OR bl
然后它将分配给 xxxx
.
awk '{gsub(/(^[Bb]l|\<[Bb]l)[^[:space:]]+/,"xxxx")} 1' Input_file
第二个解决方案: 使用 awk
你可以尝试以下。简单的解释是遍历每一行的每个字段,然后检查条件是否以 Bl
或 bl
开头,然后将其分配给 xxxx
,然后打印 edited/non-edited 行。
awk '{for(i=1;i<=NF;i++){if($i~/^[Bb]l/){$i="xxxx"}}} 1' Input_file
我有一个包含以下内容的文件:
Blekota blaboli o koblihach.
Blanka je bl...
GEwI
er
我需要将每个以 Bl
或 bl
开头的单词替换为 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:]]*
匹配以 Bl
或 bl
开头后跟 0 个或多个字母的单词。
第一个解决方案:使用awk
的gsub
函数替换所有从[开始的字段=14=] OR bl
然后它将分配给 xxxx
.
awk '{gsub(/(^[Bb]l|\<[Bb]l)[^[:space:]]+/,"xxxx")} 1' Input_file
第二个解决方案: 使用 awk
你可以尝试以下。简单的解释是遍历每一行的每个字段,然后检查条件是否以 Bl
或 bl
开头,然后将其分配给 xxxx
,然后打印 edited/non-edited 行。
awk '{for(i=1;i<=NF;i++){if($i~/^[Bb]l/){$i="xxxx"}}} 1' Input_file