【问题标题】:How to reverse each word in a text file with linux commands without changing order of words如何在不改变单词顺序的情况下使用 linux 命令反转文本文件中的每个单词
【发布时间】:2015-07-21 20:41:37
【问题描述】:

有很多问题表明如何反转句子中的每个单词,例如,我可以很容易地在 Python 或 Javascript 中做到这一点,但是如何使用 Linux 命令来做到这一点?看起来tac 可能是一个选项,但似乎这可能会反转线条和单词,而不仅仅是单词?还有什么其他工具可以做到这一点?我真的不知道。我知道revtacawk 似乎都是竞争者......

所以我想从:

cat dog sleep
pillow green blue

到:

tac god peels
wollip neerg eulb

**轻微跟进

this reference 看来,我可以使用awk 将每个字段分解为单个字符的数组,然后编写一个 for 循环以这种方式手动反转每个单词。这很尴尬。当然有更好/更简洁的方法来做到这一点?

【问题讨论】:

  • 澄清一下——你想从“猫狗”变成“tac God”吗?
  • 考虑到awk 是一种图灵完备的编程语言,它肯定能够做到。不过,您可能必须定义一个函数。
  • @bbill 我更新了我的问题以澄清。我想保留单词的顺序,但反转每个单词。
  • @TrippKinetics 这是一个有趣的琐事。显然 awk 可以访问每个单词,但我不知道如何解析 awk 中的每个单词。将继续阅读此内容。
  • stackoverflow.com/questions/9891286/… 中描述的问题与您提出的问题并不完全相同,但接受的答案应该可以帮助您解决大部分问题。

标签: linux


【解决方案1】:

试穿一下尺寸:

sed -e 's/\s+/ /g' -e 's/ /\n/g' < file.txt | rev | tr '\n' ' ' ; echo

它会折叠所有空格并将标点符号视为“单词”的一部分,但它看起来(至少大部分)有效。 sh 万岁!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-21
    • 1970-01-01
    • 2014-06-07
    • 2013-03-04
    • 2017-06-15
    • 2012-11-18
    • 2010-10-31
    • 2019-06-24
    相关资源
    最近更新 更多