Chinaunix
标题:
ultraedit中用perl 脚本实现如下替换,在线等
[打印本页]
作者:
emlin129
时间:
2015-12-17 20:12
标题:
ultraedit中用perl 脚本实现如下替换,在线等
本帖最后由 zhlong8 于 2015-12-18 22:06 编辑
如何将
address [a-z A-Z 和-]212.224.254.0 mask 24
替换成
address 212.224.254.0 mask 24
比如有这些行
address be_mobistar-212.224.254.0 mask 24
address be_base-217.72.232.0 mask 24
[a-z A-Z 和-] 中的字符长度不限,大小写不限 级带- 字符
作者:
emlin129
时间:
2015-12-17 21:03
没人搞定吗?
作者:
浅浅的墨伤
时间:
2015-12-17 23:23
其实我连需求都没太看懂……
作者:
yakczh_cu
时间:
2015-12-18 09:48
use 5.01;
while(<DATA>){
s/\s.*-/ /;
say $_;
}
__DATA__
address be_mobistar-212.224.254.0 mask 24
address be_base-217.72.232.0 mask 24
复制代码
作者:
zhlong8
时间:
2015-12-18 10:29
你这可比 4,5,2,5,5,9,? 下一个数字是多少要难多了
作者:
emlin129
时间:
2015-12-18 13:04
做一个替换,人工替换效率太低,就像看看perl能否搞定,看了半天的perl的正则表达式还没有搞定
@yakczh_cu 没看懂你写的,是不是要把文本读取了,然后通过perl执行你写的regex吗?
多谢各位的解答!
作者:
yakczh_cu
时间:
2015-12-18 20:43
回复
6#
emlin129
按你理解的方式
perl -n -e "s/\s.*-/ /;print " your_input.txt
复制代码
作者:
zhlong8
时间:
2015-12-18 22:12
楼主断下句啊,稍微给你编辑了一下。花了24个小时才明白你不是想把一行变三行
作者:
sunzhiguolu
时间:
2015-12-18 22:46
楼主表达的意思比较深奥啊, 没看懂...
作者:
stanley_tam
时间:
2015-12-21 12:06
来一发,貌似就是一正则表达
用法:perl sample.pl your_text.txt
#!perl
use strict;
use warnings;
$^I = '.bak';
while (<>) {
$_ =~ s{(?<=address\s) [\w]+ -}{}x;
print;
}
__END__
复制代码
作者:
emlin129
时间:
2015-12-26 23:57
已经搞定,4楼和7楼正解,这不过刚开始看不懂,其实这个问题就是正则表达式怎么写的问题,一开始未问到核心。现在还只能先用ultraedit中的替换,perl的完整的运行还是不太会。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2