如何仅使用 sed 反转 word 中的小写字符

如何仅使用 sed 反转 word 中的小写字符

使用 sed 反转一行中的每个单词

   Description
   -----------

   The job to do is reversing every word of a line.

   that a word is a sequence of lowercase alphabets

   Raw Input
   ---------

   112358 is a fibonacci sequence...
   a test line
   124816 1392781
   final line...

   Desired Output
   --------------

   112358 si a iccanobif ecneuqes...
   a tset enil
   124816 1392781
   lanif enil...

答案1

这个 sed 脚本可以完成这个工作:

#!/usr/bin/sed

# Put a \n in front of the line and goto begin.
s/^/\n/
bbegin

# Marker for the loop.
:begin

# If after \n is a lower case sequence, copy its last char before \n and loop.
s/\n\([a-z]*\)\([a-z]\)/\2\n\1/
tbegin

# If after \n is not a lower case sequence, copy it before \n and loop.
s/\n\([^a-z]*[^a-z]\)/\1\n/
tbegin

# Here, no more chars after \n, simply remove it before printing the new line.
s/\n//

答案2

来自的教程这里非常好。示例:echo "nixcraft" | rev。至于 SED 部分,以下是来自关联

在此处输入图片描述

相关内容