用 tr 命令替换 shell 中的另一个单词

Ali*_*lah 8 shell

我想用文本文件中的另一个词替换一个词。

文件.txt :

alireza fallah
Run Code Online (Sandbox Code Playgroud)

我的代码:

cat file.txt | tr ali ALI
Run Code Online (Sandbox Code Playgroud)

但我明白了:

ALI fALLAh
Run Code Online (Sandbox Code Playgroud)

它将所有 'a's 替换为 'A' ,'l's 到 'L' 和 'i's 到 'I' 。

有什么方法可以将 'ali' 替换为 'ALI' 吗?

daw*_*wud 8

使用 GNU 可以更轻松地完成此任务sed

$ sed -i 's/ali/ALI/' file.txt
Run Code Online (Sandbox Code Playgroud)

因为tr操作字符集而不是字符串

为避免在回显时出现不需要的替换,请尝试指定要替换的单词的确切位置,或仅匹配您感兴趣的字符串的正则表达式:

$ printf "cali\nali\nwali\nmali.\n" | grep -E '^ali' | tr ali ALI
ALI
Run Code Online (Sandbox Code Playgroud)