【问题标题】:Bash, change whole word with trBash,用 tr 改变整个单词
【发布时间】:2016-07-22 23:08:27
【问题描述】:

一段时间以来,我一直在寻找解决问题的方法,但一直找不到。我必须使用 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 会将一组翻译成另一组,因此您需要其他内容,例如sed
  • 我知道,但这是我老师给的任务。有什么想法吗?
  • @heemayl 没错,我就是这么想的。

标签: linux bash terminal command tr


【解决方案1】:

恐怕tr 不可能,因为tr 不能限制替换。您收到ala Has a cat,因为首先将a 替换为A,然后再次替换为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-comand。

【讨论】:

  • 好的,非常感谢您提供的示例。我想我会去问问我的老师他到底有什么想法。
  • @ninigi 是的,因为它看起来确实很奇怪。是否指定与tr 完全一样?
  • 老实说,我不确定了。
猜你喜欢
  • 2021-01-22
  • 2020-11-08
  • 1970-01-01
  • 2014-10-03
  • 1970-01-01
  • 2023-01-09
  • 2014-04-24
  • 2014-01-25
  • 2021-05-21
相关资源
最近更新 更多