防止迅雷上传有好多方法,有设置ntfs权限的,有批处理删除cid_store.dat文件的,有卡巴斯基(kapersky)设置禁止访问的,有限制进程Thunder5.exe上传带宽的.
我试了试改cid_store.dat文件属性,也可以实现禁止上传.
先用记事本打开cid_store.dat,把所有文字都删除,然后到cmd下,输入
1 | attrib c:\windows\system32\cid_store.dat +s +h +r |
防止迅雷上传有好多方法,有设置ntfs权限的,有批处理删除cid_store.dat文件的,有卡巴斯基(kapersky)设置禁止访问的,有限制进程Thunder5.exe上传带宽的.
我试了试改cid_store.dat文件属性,也可以实现禁止上传.
先用记事本打开cid_store.dat,把所有文字都删除,然后到cmd下,输入
1 | attrib c:\windows\system32\cid_store.dat +s +h +r |
UNIX Shell 里面比较字符写法:
awk中的关联数组十分灵活方便。这一篇中将会涉及关联数组的用法。
——by hq00e
曾经看过这样的一个签名档:
如果将英语的26个字母由A到Z分别编上1到26的分数,
你的知识(KNOWLEDGE)只能得到11+14+15+23+12+5+4+7+5=96分。
你努力工作(HARDWORK)也只能得到8+1+18+4+23+15+18+11=98分。
只有你的态度(ATTITUDE)才是左右你生命全部的1+20+20+9+20+21+4+5=100分。
想知道还有哪些单词的总和是100吗?这知道答案很容易,只要你会用awk。所以这一次我们要写一个脚本来计算英文单词字母的总和。如果有字典文件还可以找出和为特定值的所有单词和词组。
根据前面引用的签名档,字母A到Z将分别由数字1到26来表示——A=1,B=2,…,Z=26。不分大小写所以A=a=1。
只要两步——看来是个简单任务!现在开始想一想具体怎么用awk实现?或者(如果你对awk不是很熟的话)用其他编程语言怎么实现?
首先,对字母编号。awk中为数组元素分配多个值常用的方法是用split(STRING, ARRAY [, FIELDSEP])
函数。它的返回值是数组元互素的个数。需要注意的是:数组的下标是从’1’,而不是从’0’开始的。
1 | n=split("ABCDEFGHIJKLMNOPQRSTUVWXYZ",alpha,"") |
这条语句会生成alpha数组,内容如下:alpha[1]=”A”;alpha[2]=”B”;…;alpha[26]=”Z”。但我们需要的是以字母为索引找到对应的数值,而不是相反。所以还要进一步加工:
1 | while(n) { num_alpha[alpha[n]]=n; n–} |
现在得到了一个关联数组num_alpha[]。内容如下:
1 | num_alpha["A"]=1 |
现在只要以输入的字母为索引就能得到对应的数值了。假设输入”ADD”,只要分别以”A”、”D”、”D”为索引加总:
1 | num_alpha["A"] + num_alpha["D"] + num_alpha["D"] |
加总的脚本如下:
1 | { |
上面的脚本中并未对输入进行限定。如果输入含有非字母字符,脚本仅是忽略它们——因为在数组中没有相应的索引,所以不会对运算结果造成影响。但你可能希望对结果进行限定,使得只有当输入中只含字母和空格(词组)时才进行加总。为此我们可以用正则表达式对输入做简单的筛选:/^[a-zA-Z ]+$/
(也可以使用字母类[[:alpha:]]
)。注意后面的空格。
具体实现如下:
1 | gawk 'BEGIN{ |
不过我们还可以将这个脚本写得更紧凑一点,我们需要有一种不同的思路。上一个脚本
,我们预先计算每个字母对应的数值,但我们其实可以边加总边计算,即省略了数组这一中间过程。awk提供了一个函数index(IN, FIND)
,用来返回FIND
在’IN’中的位置。而”ABCD…Z”中字母的位置与各自的编号是一致的,因而可以以输入的字母为索引通过 index()
来实时计算总和。
1 | gawk -vFS="" '{ |
下面是一些运行结果:
1 | $ echo fortune|gawk -vFS="" '{sum=0;for(i=1;i<=NF;i++)sum+=index("ABCDEFGHIJKLMNOPQRSTUVWXYZ",toupper($i));print sum}' |
财富的确是很重要,看来比爱重要很多——用”love”运行的结果是”54”。不过建议试一下”love and care”——光有爱是不行的还要懂得关怀!
如果你有看上一篇并有找到合适的英汉字典的话,我们还可以让gawk替我们找出所有和为特定值的单词或短语。为此需要增加一条判断语句:
1 | gawk -vFS="" '{ # 将FS设为空字串,这样每个字母都会被视为一个栏位。 |
当然我们还需要有字典文件,对我们之前用过的字典文件dict.txt2进行加工:cut -f1 dict.txt >voca.txt
如果用的是Windows的话,你可能没有cut工具,那就用awk:
1 | gawk -v FS="t" "{print $1}" dict.txt >voca.txt |
运行前面的脚本:
1 | gawk -vFS="" '{…省略…}' voca.txt |
这是脚本在Windows下的运行结果(看来总和为100的单词和词组还真不少。用我的字典,删除重复项后,共有3177条条目总和为100):
1 | e:> gawk -vFS="" "{sum=0;for(i=1;i<=NF;i++)sum+=index("ABCDEFGHIJKLMNOPQRSTUVWXYZ",toupper($i));if(sum==100)print}" voca.txt |
当然如果你不想输入那么长的脚本的话,可以将它放到单独的脚本文件中。
最近版本的SED ONE-LINER现在可以在sed.sourceforge.net上找到了。有多个语言版本也包括了简体中文版本。意大利语和西班牙语的翻译也正在进行中。
SED单行脚本快速参考(Unix 流编辑器) 2005年12月29日
英文标题:USEFUL ONE-LINE SCRIPTS FOR SED (Unix stream editor)
原标题:HANDY ONE-LINERS FOR SED (Unix stream editor)
整理:Eric Pement – 电邮:pemente[at]northpark[dot]edu 版本5.5
译者:Joe Hong – 电邮:hq00e[at]126[dot]com
在以下地址可找到本文档的最新(英文)版本:
http://sed.sourceforge.net/sed1line.txt
http://www.pement.org/sed/sed1line.txt
其他语言版本:
中文 – http://sed.sourceforge.net/sed1line_zh-CN.html
捷克语 – http://sed.sourceforge.net/sed1line_cz.html
荷语 – http://sed.sourceforge.net/sed1line_nl.html
法语 – http://sed.sourceforge.net/sed1line_fr.html
德语 – http://sed.sourceforge.net/sed1line_de.html
葡语 – http://sed.sourceforge.net/sed1line_pt-BR.html
‘r’命令用来读入文本。与’a’的作用相似,但文本是放在独立的文件而不是放在脚本中。用’r’的好处在于将数据与脚本独立,使脚本更易读并且修改数据文件更方便。
这是GNU sed自带文档中对’r’命令的说明:
r filename
Queue the contents of filename to be read and inserted into the output stream at the end of the current cycle, or when the next input line is read. Note that if filename cannot be read, it is treated as if it were an empty file, without any error indication.
GNU对这个命令进行了扩展:
R
命令。这个命令用法与r
一样但一次只读入一行。另外一些需要注意的地方:
我一向认为一个例子比得上千言万语。看个例子先:现有一个网页要进行如下修改,在中增加标签。在标签前增加版权声明的标签。我们将要在标签后的内容放在meta.tag中。将放在文件未尾的内容放在copyleft.tag中。里面的内容如下:
1 | $ cat meta.tag |
我们需要的命令是:
1 | sed '/< /title>/r meta.tag |
写成单行的形式就是:
1 | sed -e '/< /title>/r meta.tag' -e '/< /body>/{x;r copyleft.tag' -e 'G}' samp.html |
如果你在Windows的命令行上使用的话,那就根据你所用的版本将单引号相应的改为双引号。不过请务必注意上面脚本是一个简化的情形,因为标签也可能有大写字母(更复杂的情形是title后的方括号也许在下面一行)(虽然W3C的XHTML中要求标签必须是小写,但这种可能性是存在的视你自已的情况而定。)如果你用的是GNU sed的话那恭喜,你可以在式样后使用’I’修改符(modifier):/< /title>/I。否则:/< /[tT][iI] [tT][lL][eE]>/当然偶尔可以偷懒:/< /[tT].[tT].[eE]>/。
实例:批量修改
当然我们想修改的通常不会只是一个文件,于是我们需要用到shell(注意文件的读写权限):
1 | $ for a in 'find . -name "*.html"' |
find有一个-exec,但是如果参数太多会出错因而这里使用了for命令。
如果是Windows平台:
1 | for /R %a in (*.html) do @copy %a %a.bak & @sed -e "…" %a.bak>%a |
$ for a in ‘find . -name “*.html”‘
do
gsed -i.bak -e ‘
/< /title>/r meta.tag
/< /body>/{
x
r copyleft.tag
G}’ $a
done
正则表达式(regular expression)就是用一个“字符串”来描述一个特征,然后去验证另一个“字符串”是否符合这个特征。比如 表达式“ab+” 描述的特征是“一个 ‘a’ 和 任意个 ‘b’ ”,那么 ‘ab’, ‘abb’, ‘abbbbbbbbbb’ 都符合这个特征。
正则表达式可以用来:
正则表达式学习起来其实是很简单的,不多的几个较为抽象的概念也很容易理解。之所以很多人感觉正则表达式比较复杂,一方面是因为大多数的文档没有做到由浅入深地讲解,概念上没有注意先后顺序,给读者的理解带来困难;另一方面,各种引擎自带的文档一般都要介绍它特有的功能,然而这部分特有的功能并不是我们首先要理解的。
文章中的每一个举例,都可以点击进入到测试页面进行测试。闲话少说,开始。
##1. 正则表达式规则
字母、数字、汉字、下划线、以及后边章节中没有特殊定义的标点符号,都是”普通字符”。表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符。
举例1:表达式 “c”,在匹配字符串 “abcde” 时,匹配结果是:成功;匹配到的内容是:”c”;匹配到的位置是:开始于2,结束于3。(注:下标从0开始还是从1开始,因当前编程语言的不同而可能不同)
举例2:表达式 “bcd”,在匹配字符串 “abcde” 时,匹配结果是:成功;匹配到的内容是:”bcd”;匹配到的位置是:开始于1,结束于4。
实例一:
test.txt文件内容如下:
上海 291760
上海 5976
上海 75233
云南 4017
云南 63196
云南 8189
内蒙古 11227
内蒙古 54657
内蒙古 7289
北京 34902
北京 370128
北京 99264
吉林 11486
吉林 4826
吉林 88162
四川 16441
四川 179978
四川 18618
天津 10028
天津 130041
天津 17501
宁夏 13474
宁夏 16181
宁夏 376
安徽 123710
安徽 17193
安徽 7956
山东 35178
山东 485465
山东 55371
山西 116435
山西 15161
山西 19815
第一列是地区,第二列是出现的次数,将第一列相同的第二列数值相加,并显示?
1 | awk '{a[$1]+=$2}END{for(i in a)print i,a[i]}' test.txt |
实例二:
如何取消科学计数显示?
使用OFMT="%f"
输出,如:
1 | [root@root /]$echo '123456789123456' |awk '{print $0+0}' |
列出UA字符串:
1 | zcat log.gz |awk -F '""' '{print $2}'|sed -e 's/" .{1,}//g'|head |
正则回逆引用:
1 | sed '/pattern/&/g' file |
向前匹配:
1 | perl -ne 'print if s/.*(?=pattern)/pattern2/' file |
ACDSee3.1 RC1 蓝色网际版,带Picaview插件,报”不可恢复的插件错误“的解决办法:
在系统属性=>高级=>数据执行保护,选择第二项”为除下列选定程序之外的所有程序和服务启用DEP“,然后将ACDSeeX.EXE,IDE_ACDStd.apl,PicaView.dll 一并添加进去。
韦小宝的形象是一个经典,所以当这个经典被无数次翻拍的时候,人们每一次都会有不同的意见和建议,这次也不例外。经过梁朝伟和陈小春等人多次演绎后,黄晓明这个有史以来最帅的“小宝”终于开始接受人们的检阅了。只是这次,第一个下结论的是这部戏的导演、大胡子张纪中昨天很认真地对人们说:“这个版本是以前所有版本当中最靓丽的,用贬义的词来说是最香艳的。”但是我们想问的是:“难道《鹿鼎记》就一定要香艳吗?”
是的,所有人都是这样认为,包括导演。一个男人和七个女人的故事,该怎么讲?导演最开始的定位就是不香艳,“我们不会去删减什么。”导演信誓旦旦地承诺,但是我们不禁要问:“我们没有人说你的《鹿鼎记》怎么样啊?我们只是想看一个活力四射的、机智搞笑的韦小宝。”和《色,戒》一个道理,有些东西其实不需要情色,它有时候只能做噱头,但是作为电视剧,它不能用这样的噱头,于是导演自己制造,“我们的电视剧香而不艳。”想起一句成语,“此地无银三百两”。
挺悲哀,因为这句话,张纪中让《鹿鼎记》与经典擦肩而过了。