有a、b两个文件,需要删除b文件中的所有a文件行,例如
a文件:
111
222
abc
b文件:
111
ABc
def
最后显示:
def
使用awk如下即可:
awk ‘NR==FNR{a[tolower($0)]}NR!=FNR&&!(tolower($0) in a){print $0}’ a b
千里之行,始于足下,做好自己。
有a、b两个文件,需要删除b文件中的所有a文件行,例如
a文件:
111
222
abc
b文件:
111
ABc
def
最后显示:
def
使用awk如下即可:
awk ‘NR==FNR{a[tolower($0)]}NR!=FNR&&!(tolower($0) in a){print $0}’ a b
手头有100万的邮件地址,每行一个,按照字母顺序排序,现在需要将这些邮件地址全部打乱,使用linux自带的shuf命令:
$shuf emailfile.txt
100万的数据瞬间完成,简单快捷。
但是很奇怪的时候,在我的DEBIAN生产服务器上竟然找不到该命令,用aptitude search也找不到。
之前写了一篇在Ubuntu Linux下的截图软件shutter,shutter非常强大,但是对于添加自定义的文本比较麻烦,需要打开GIMP等图形编辑软件来处理。其实,可以使用浏览器的第三方扩展来截图,例如,“截图快手”就是一款非常优秀的浏览器扩展,可安装在Chrome、Friefox、Safari下。
截图快手可以很方便的在截取的区域中加入椭圆形、四方型的注释框,可以很方便加入注释文字,在完成批注或注释后,鼠标点击几下,就能将截图上传到截图网站,将返回的网址分享给朋友;还很方便将截图发送到twitter、facebook等社交网站。
截图快手官方网站: http://awesomescreenshot.com/
周五晚上花了一点时间用python写了一个刷互动力量投票系统的工具,原理很简单,先在代理网站上找代理IP,然后模拟http的方式,用urllib提交数据。这里有一些细节控制,修改一下user_agent,不然会在投票系统的服务器日志里显示“python/urllib”的user_agent信息。
我没有处理验证码这一块,因为我要刷的那个投票恰好没有验证码;就算有,那个验证码也是很有规律,用PIL或者自己写算法来分析也不是难事。
下面是整个刷票的程序,大约就20多行代码,非常简练。
#!/usr/bin/python #-*-coding:utf-8-*- import urllib,urllib2 import re import sys if len(sys.argv) != 3: sys.stderr.write("Usage: begin page num, end page num\n") raise SystemExit(1) start = int(sys.argv[1]) end = int(sys.argv[2]) for i in range(start,end): f = urllib.urlopen("http://www.proxycn.com/html_proxy/http-"+str(i)+".html") html = f.read() proxies = re.findall("clip\('(.*?)'\)",html,re.S) for n,proxy in enumerate(proxies): print str(n+1)+" "+proxy proxy_handler = urllib2.ProxyHandler({'http': 'http://'+proxy}) data = urllib.urlencode({'vote_id':12345,'question_id':67890}) request = urllib2.Request("http://vote.activepower.net/script/user/get_vote_save.asp") request.add_header('User-Agent', 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)') opener = urllib2.build_opener(proxy_handler) try: ff = opener.open(request,data,5) except: print "time out"
这是我第一次使用快钱,因为有一笔款急需转帐。我注册登录后,在左侧菜单点击”我要付款”》”付款到银行帐号”,提交信息后系统说余额不足,需要充值,于是,我点击”账户管理”》”充值”,从我的信用卡里将款打到快钱(我的借记卡没有网上银行功能),再次在”付款到银行帐号”里提交,系统提示操作成功,告知我在3个工作日内可以到帐。
两天后,收到快钱风控部门的邮件,说可能涉及套现,转帐不成功。但是从开始到结束我都没有看到任何关于套现的说明,尤其在”付款到银行帐号”页面,没有任何的文字说明。最后在充值页面看到一行关于”信用卡套现收取1%手续费”的文字,而这行文字并没有直接告知用户哪些行为是不允许的。
我认为在整个过程中,我没有做错,唯一的错误就是没有将快钱网站的每个页面都点击进去阅读10回;如果快钱在”付款到银行帐号”页面有说明,或者能检测到信用卡不能支付,又或者在提交信息时有提醒,那么都不会有这样的问题;快钱由于系统设计问题,提示严重不足,造成我延误了多天时间,还损失1%的手续费,这些损失,请问快钱怎么处理?还是说,这是快钱故意设陷收取手续费?
想不到我在快钱的第一次体验如此差劲,这是我的第一次使用,也是最后一次。
在Debian/Ubuntu的发行版里,网络建立前/后和网络断开前/后都会到/etc/network里运行相应目录下的脚本:
if-down.d — 网络关闭前
if-post-down.d –网络关闭后
if-pre-up.d –网络建立前
if-up.d –网络建立后
例如,想每次在网络建立后运行一段自己写的脚本,则将此脚本拷贝到if-up.d目录下,并赋予755的权限即可。
目标
你想使用Linux和OpenSSH来自动化你的任务。因此,你需要从主机A中的用户a自动登录到主机B中用户b的过程中不想输入任何密码。
HOW TO
首先以用户a登录上主机A,生成密钥。不要输入密码:
a@A:~> ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/a/.ssh/id_rsa): Created directory '/home/a/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/a/.ssh/id_rsa. Your public key has been saved in /home/a/.ssh/id_rsa.pub. The key fingerprint is: 3e:4f:05:79:3a:9f:96:7c:3b:ad:e9:58:37:bc:37:e4 a@A
用SSH以用户b的身份在主机B上创建~/.ssh目录:
a@A:~> ssh b@B mkdir -p .ssh b@B's password:
最后,将public key上传到B主机下:
a@A:~> cat .ssh/id_rsa.pub | ssh b@B 'cat >> .ssh/authorized_keys' b@B's password:
输入密码后,以后再登录主机B都不需要输入。
a@A:~> ssh b@B hostname