文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>shell实现rev

shell实现rev

时间:2008-12-07  来源:ubuntuer

   有段时间没有上来cu了,实在说不过去,最近开始了段新生活,需要慢慢时间适应,然后好好的定个小小的plan.话不多说了,shell这东西一段时间不整似乎就忘了^_^
   大家都知道rev是反转字符串,那我们用sed也玩玩.
  

sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//'


例子: echo "abcd" | sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//'

()  用于捕获匹配的内容(matching  sub-expressions)
\1,\2  分别是第一第二个()中捕获的内容(从左到右,先出现的为\1)
&   为整个匹配部分的内容,这个例子中就是\(.\)\(.*\n\)匹配的内容,即模式空间第一个\n及之前的内容
//D  的//中省略了模式串,使用前一个/x/或s/x/y/中的模式x,本例中是\(.\)\(.*\n\)
  D命令删除模式空间第一个\n及之前的内容,并开始下一次循环,注意模式空间无内容时才开始处理下一行
G  把保存空间的内容附加到模式空间中去,保存空间的默认内容是空,执行后模式空间的内容会增加一个\n

命令                            模式空间
读入新的一行                  abcd
/\n/!G                           abcd\n
s/\(.\)\(.*\n\)/&\2\1/;     abcd\nbcd\na
/\(.\)\(.*\n\)/D               bcd\na               
/\n/!G                           
s/\(.\)\(.*\n\)/&\2\1/;      bcd\nacd\nba
/\(.\)\(.*\n\)/D                cd\nba               
/\n!G
....
s/\(.\)\(.*\n\)/&\2\1/;     \ndcba
/\(.\)\(.*\n\)/D              D失败,
s/.//                             执行s/.//去掉前面的\n后输出dcba,结束一行的处理

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载