long8.com

当前位置:龙8官网long8 > long8.com > sed的粉丝

sed的粉丝

来源:http://www.sketchydesignstudio.com 作者:龙8官网long8 时间:2019-10-08 02:39
  版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖。如要转贴,必须注明原文网址

  http://www.cnblogs.com/Colin-Cai/p/7222794.html 

  作者:窗户

  QQ:6679072

  E-mail:6679072@qq.com

  UNIX/LINUX下有个工具叫sed,起点于ed命令,但尚未人机交互,完全都以脚本语言。sed尽管是结构化的次第,但其设想出来的机器与大家实际上机器天壤悬隔,凭借格局空间和保留空间的更迭使用、正则表达式不断沟通达到拍卖的指标。

  sed有卓殊一部分听众,就好似lisp那样,因为特殊,而用sed写出sed不专长的业务是听众的求偶,就像是这种措施很有红客精神的痛感,其实异常的土憋。

  

  那几个网站叫the sed $HOME,里面集聚了众多才子脚本,二个个神同样的sed脚本啊。

  

  the sed $HOME 里面包车型客车方面那一个本子,被大家真是是sed的极限脚本,脚本十二分怪诞,完成了贰个dc总结器(UNIX下的贰个基于逆波兰共和国(The Republic of Poland)式的随机精度总括器),笔者曾准备读懂它,但只能说,sed程序真的不是拿来给人读的。

  作者也早便是sed听众中的一员,无论什么的文本管理,作者都愿意尝试着用sed去写。

  翻曾经在论坛里的帖子,小编早已出过一道用sed标题:

得出一行中最大的数
比如
00123xdsd0176ddsdw201eew
得出201 19
19为其位置

   sed里面未有别的直接的数学生运动算,此类难点都亟待给奇怪的才具。笔者给了一个解答如下:

#!/usr/bin/sed -rnf
/[0-9]/!d
s/[^0-9]/ /g
s/$/ 0123456789/
tloop
:loop
s/^( *)([0-9]+)( +)([0-9]+)( .*0123456789)$/1b2e3b4e5/
tmain

h
s/[0-9].*/ /
s/./1/g
:cnt
s/(^|;)1111111111/1;/g
tcnt
s/111111111/9/g
s/11111111/8/g
s/1111111/7/g
s/111111/6/g
s/11111/5/g
s/1111/4/g
s/111/3/g
s/11/2/g
:zero
s/;;/;0;/g
tzero
s/(^$)|;$/0/
s/;//g
G
tend
:end
s/(.*)n *([0-9]+).*0123456789$/2 1/
tend2
d
:end2
p
d

:main
s/b(0+)/1b/g
h
:a
s/(bf*)[0-9]/1f/
ta
/(bf*)e.*1f/ {
        :e
        g
        :b
        s/[0-9]([0-9]*b.*b)/ 1/
        tb
        :B
        s/(b *)[0-9](.*b)/1 2/
        tB
        s/[be]//g
        tloop
}
s/(bf*e)(.*)(bf*e)/31/
/(bf*)e.*1f/ {
        :f
        g
        :c
        s/(e.* )[0-9]([0-9]*b)/1 2/
        tc
        :C
        s/(b *)[0-9]([^b]+)$/1 2/
        tC
        s/[be]//g
        tloop
}
g
:d
/b(.).*b1/! {
        /b(.).*b(.).*1[0-9]*2[0-9]*$/be
        bf
}

s/b([0-9])(.*)b([0-9])/1b23b/
td
be

  看了看,几年以前的代码居然也大致看懂了。随着论坛的没落,今后从不那几个情怀写sed了,骤然有一点点怀想以前。

 

本文由龙8官网long8发布于long8.com,转载请注明出处:sed的粉丝

关键词:

上一篇:Python标准库之urllib

下一篇:没有了