linux - Bash,用 tr 改变整个单词

标签 linux bash terminal command tr

一段时间以来,我一直在寻找解决问题的方法,但一直找不到。我必须使用 linux tr-command 来改变整个单词。 例如,“ala, has”到“Ala, Has”。
它应该像这样工作,当我输入“ala has a cat”时 - “Ala Has a cat”。

但是每当我将它传递给终端时,我得到的是:“ala Has a cat”。关于如何使用 tr 更改单词的整个部分有什么想法吗?

“alanna hasn't got a cat”也应该改为“Alanna Hasn't got a cat”。

最佳答案

恐怕这对 tr 是不可能的,因为 tr 不能限制替换。您收到 ala Has a cat,因为首先 aA 替换,然后再次被 a 替换。使用 tr 它也可以看起来像:

echo "ala has a cat" | tr -ts "'[a]' '[h]'" "'[A]' '[H]'"
AlA HAs A cAt

但正如我所说,tr 替换或删除多个字符。有关更多信息,请查看 Linux 中的手册页 man tr

不过,你想要的可以通过sed来实现。这是它:

echo "ala has a cat" | sed -e 's/a/A/' -e 's/h/H/'
Ala Has a cat

-e 选项添加了更多的 sed 操作数,类似于逻辑与。在末尾添加 /g 等同于 tr 命令。

关于linux - Bash,用 tr 改变整个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36385196/

相关文章:

Linux 上的 Java Robot - 无大写字符(使用 x11vnc )

java - 在什么情况下 CLOCK_MONOTONIC 可能不可用

linux - 保持进程在容器上运行的正确方法

linux - 简单的 bash 命令失败,无法执行二进制文件

linux - 如何制作一个通用的 shell 来运行所有的 C 程序而不指定名称

xcode - 我如何在 Mac 上运行 asm 文件?

mysql - 我安装了 MySQL,但无法通过终端访问它

regex - 使用正则表达式获取命令列表

mysql - 通过终端上传sql文件

linux - 使用 AWK 和 BASH 将大型压缩文件拆分为多个输出