来源:虎扑 网址:http://www.mxy4grjo.cn/a/www.ytpp.com.cn/
播报:
青年员工一边认真听讲理论、牢记方法,一边提出疑问、虚心求解。第42分钟,津门虎队罗萨连续左右脚开弓远射,可惜一次偏出,一次击中门柱。超市、电影院、KTV等人员密集场所在安全出口、疏散通道处设置门禁系统时,要保证火灾时能向疏散方向直接开启,并应在显著位置设置安全出口标识和使用提示。
在月牙泉边,她遇到了九色鹿幻化而成的少年敦煌守护神鹿鸣,还有丝路商人巴巴亚。项目是高质量发展的生命线。
上赛季,汉兰效力于西班牙联赛,场均贡献分1篮板助攻的数据,作为欧洲最高水平的联赛,汉兰场均分的数据已经非常出色了。市科技局高新处二级调研员周明表示,我市围绕海洋科学装备、海洋运载装备、海洋油气开采以及新能源应用等领域,开展卡脖子关键技术攻关和应用示范,引导全社会不断突破产业发展重大技术难题。
四、使用燃气的房间应打开门窗保持通风,做饭、烧水时要有人照看,避免汤水沸溢造成火灭漏气。张老师的讲解,将集邮文化与地方特色文化有机地相结合起来,让社区群众增长了对集邮文化的了解与认识,带大家感受到了集邮文化、书信文化。
重点推荐: 爱的代价?法国女孩布兰奇被母亲囚禁25年,垃圾为伍蟑螂老鼠为伴 特别是在假期期间,很多商场为了营造节日气氛大量使用可燃易燃材料进行装修装饰,一旦发生火灾,燃烧迅猛,产生大量有毒烟气,严重威胁人员生命安全。租金下行压力有所缓解。

本帖最后由 本友会机友会摄友会 于 2019-05-20 11:03 编辑
本人 原创文章。始于 2018-02-04 允许转载,但必须保留名字和出处,否则追究法律责任
ps找算替.ps1,即powershell版的sed。
是我根据这个找替原理,编写的查找替换实用工具软件。
脚本下载地址:
https://pan.baidu.com/s/1yuqUOhY9lEw65vJ-vceg4w
里面有《ps找算替_v3_readme.txt》
歌曲有云,“你总是匹配头,匹配尾,独自一人匹配到天亮。。。”
==============================【第一章 前言】==============================
掐头,去尾,过滤(保留)中间的问题,是我们写脚本最常遇到的。
http://bbs.chinaunix.net/thread-4262197-1-1.html
http://bbs.chinaunix.net/thread-4263954-1-1.html 尽解 掐头 去尾 的ps函数。
http://bbs.chinaunix.net/thread-4264638-1-1.html
http://bbs.chinaunix.net/thread-4291758-1-1.html
http://bbs.chinaunix.net/thread-4291881-1-1.html
http://bbs.chinaunix.net/thread-4251010-1-1.html
==============================【第二章 代码】==============================
我写过一段ps代码,主要代码不到30行。注释不算行数,echo类语句不算行数。花括号不算行数。
只需要简单修改,任意(保留),(除掉),【头】【尾】【中间】。可以尽解所有【掐头】【去尾】【取中间】的问题。
真正做到了代码复用,无需学习正则。代码如下:
- $文件存入大字符串 = Get-Content -LiteralPath 'a:\pscode\0\掐头去尾取中间\20170726.txt' -raw
- #$文件存入大字符串 = Get-Content -raw -LiteralPath $args[0]
- $已经找到了匹配头 = $false
- $从偏移量开始 = 0
- $匹配头字符串 = "Channel:北京卫视`r`n"
- $匹配尾字符串 = 'Channel:'
- #$匹配身字符串 = 'ccc'
- do
- {
- if ($已经找到了匹配头 -eq $false)
- {
- $tmp匹配头位置 = $文件存入大字符串.IndexOf($匹配头字符串,$从偏移量开始)
- if ($tmp匹配头位置 -eq -1)
- {
- Write-Host '找不到头了'
- exit 1
- }
- else
- {
- $匹配头位置 = $tmp匹配头位置
- $已经找到了匹配头 = $true
- $从偏移量开始 = $匹配头位置 + 1
- }
- }
- else
- {
- $tmp匹配尾位置 = $文件存入大字符串.IndexOf($匹配尾字符串,$从偏移量开始)
- if ($tmp匹配尾位置 -eq -1)
- {
- Write-Host '找不到尾了'
- exit 2
- }
- else
- {
- $匹配尾位置 = $tmp匹配尾位置
- [string]$匹配出的字符串 = $文件存入大字符串.Substring($匹配头位置,($匹配尾位置 - $匹配头位置))
- # if ( $匹配出的字符串.Contains($匹配身字符串) ) #区分大小写
- # {
- Write-Host $匹配出的字符串
- # }
- $已经找到了匹配头 = $false
- $从偏移量开始 = $匹配尾位置 + 1
- }
- }
- }
- while ($从偏移量开始 -lt $文件存入大字符串.Length)
- Write-Host '正常结束'
复制代码
==============================【第三章 讲解重要!】==============================
下面我来讲解下我的代码:
整个代码块很简单:
do
{
if ($已经找到了匹配头 -eq $false) {找头代码}
else {找尾代码}
}
while (从0到文件尾)
1do-while循环,遍历整个字符串,文件。
2找完头,就找尾。如果不需要找尾,就只用找头代码。即找头,找头,找头。 ;)
3在【头尾匹配】情况中,头尾都找到了,就可以,任意(保留),(除掉),【头】【尾】【中间】。
4在【头头匹配】情况中,两个头都找到了,也可以,任意(保留),(除掉),【头】【尾】【中间】。
5可以通过简单修改,如在循环,递归中,添加计数等。
6取到的部分,可以通过循环,递归,再取。
7匹配尾,是匹配头后面第一个。如果想要最后一个,应该用lastindexof替换indexof,即【$tmp匹配尾位置 = $文件存入大字符串.LastIndexOf($匹配尾字符串,$从偏移量开始)】
8代码虽然不是特别简短,但30行,代码清晰,猪能懂,傻能改!一劳永逸。万用。尽解头尾中间问题。
9作为对比:
9.1 awk,sed正则难。
9.2 每一个类似的问题,awk,sed都总要重写代码。代码无法复用。虽然这代码比30行短。
9.3 代码无法复用。意味着,自己写过的代码,留着也无用,对吧。
9.4 代码差别太大。意味着,半年后温习自己写过的代码,陌生了,重新理解,对吧。
10代码的原理,和正则类似,相当于打散的正则,更方便控制。
11此代码的性能:
一次读取所有字符串。不适合于太大的文本。对于大文本,只需要简单修改脚本代码。
11.1大文件,请修改代码第一行。使用.net文件流StreamReader,一行行读取文本,来达到最佳性能。
11.2匹配过程中产生的,临时字符串。使用.net的内存字符串stringbuilder,来达到最佳性能。
==============================【第四章 结论】==============================
如果说,重新造轮,是造新【酒瓶】的话。
shell+awk+sed:
我总是造新瓶,每个瓶子绝不重样。然后用新酒瓶装酒。
powershell:
收酒瓶子嘞,我总是:
1克隆旧瓶,成为新瓶。
2给新瓶传入参数。简单调整新瓶长、宽、高、形状、颜色、等参数。
3然后装新酒。
当然还是用旧瓶克隆简单,对吧。
什么?
旧瓶不如新瓶好?不如新瓶干净?啤酒厂都是刷洗旧瓶的,别告诉我你没喝过【600ml绿玻璃瓶啤酒】。
即便新瓶,也还是用的旧玻璃。正则还不是10年前的旧的?
==============================【第五章 歌曲】==============================
最后,献给大家一周歌: 《你总是匹配头》
《你总是心太软》在线伴奏:
http://play.baidu.com/?__m=mboxC ... =704086&__o=/search||songListIcon&fr=ps||www.baidu.com&__s=心太软 伴奏#
---------------------
你总是【匹配头】,【匹配尾】,
独自一个人,匹配到天亮,
你无怨无悔,的用正则匹配,
我知道你,根本已经烦躁。
---------------------
你总是【造新轮】,【造新瓶】,
把所有脚本都自己扛 昂~~~
正则总是简单,学好太难,
不懂【贪婪】,就别再勉强 扬~~~
---------------------
夜深了你还不想睡
你还在想着他吗
你这样痴情到底累不累
明知他不会回来安慰
只不过,想好好,写一个过滤,
可惜它,无法给你满分(正则)
多余的牺牲,他不懂心疼
你应该不会只想,做个好人
喔 几天没写,就已经忘了吧(正则)
该放就放,再想也没有用,
傻傻等待,也不会记起来,
你总该为自己,想想未来
---------------------
你总是【匹配头】,【匹配尾】,
独自一个人,匹配到天亮,
你要是会了,我30行代码,
它能让你,从根本变的更强。
---------------------
你总是【造新轮】,【造新瓶】,
把所有脚本都自己扛 昂~~~
【旧轮】总是简单,【新轮】太难,
30行代码,学会了,就会变强 ~~~
30行代码,你学了,就变得更强 ~~~
“你总是匹配头,匹配尾,独自一人匹配到天亮。。。”
以后遇到类似问题,想想这首歌词即可。
---------完------------
|