单词长度和替代使用sed - bash

时间:2014-01-05 15:14:16

标签: linux bash sed

我有一个看起来像这样的文件:

hell hi tell smith david
abc def ab abcd 
123456 123ab

我想要反转所有长度为3和4的单词,以得到这样的输出:

lleh hi llet smith david    
cba fed ac abcd
123456 123ab

我怎样才能严格使用sed

1 个答案:

答案 0 :(得分:1)

你走了:

sed -re 's/\<(.)(.)(.)\>/\3\2\1/g'

说明:

  • -r标志是能够使用扩展正则表达式。它特定于GNU sed。如果没有这个,我将不得不将模式编写为:\<\(.\)\(.\)\(.\)\>
  • \<匹配单词的开头,\>结束。两者都没有长度。
  • (...)内匹配的内容可以替换为第一个表达式的\1,第二个\2的{​​{1}},依此类推。
  • 最后的(...)标志是替换同一行上的所有出现,而不仅仅是第一个

简而言之,搜索模式匹配长度为3的单词,并用反转的字母替换它们。

我看到你更新了你的例子,你想要反转长度为4的单词。为此,您可以按照相同的逻辑添加另一个表达式,如下所示:

g