我有一个看起来像这样的文件:
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
?
答案 0 :(得分:1)
你走了:
sed -re 's/\<(.)(.)(.)\>/\3\2\1/g'
说明:
-r
标志是能够使用扩展正则表达式。它特定于GNU sed。如果没有这个,我将不得不将模式编写为:\<\(.\)\(.\)\(.\)\>
\<
匹配单词的开头,\>
结束。两者都没有长度。(...)
内匹配的内容可以替换为第一个表达式的\1
,第二个\2
的{{1}},依此类推。(...)
标志是替换同一行上的所有出现,而不仅仅是第一个简而言之,搜索模式匹配长度为3的单词,并用反转的字母替换它们。
我看到你更新了你的例子,你想要反转长度为4的单词。为此,您可以按照相同的逻辑添加另一个表达式,如下所示:
g