grep awk sed tar wget各种linux工具
最近忙于处理被刷bug,各种查日志,取数据,又对一些linux文本处理工具多会了一些功能,特记录在此。
####wget 以前就随便用用,顶多加个-O重命名下载文件
-c
断点续传-t 0
反复尝试的次数,0为不限次数-O xxx
下载后重命名为xxx 还有个一遍下载一遍计算md5的妙招:wget -O - http://example.com/file | tee file | md5sum > file.md5
学习了!
####tar
先列个tar的关于打包的基础功能
tar -cf all.tar *.jpg
将所有jpg文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。
tar -rf all.tar *.gif
将所有gif文件增加到all.tar的包里面去。-r是表示增加文件的意思。
tar -uf all.tar logo.gif
更新原来all.tar中logo.gif文件,-u是表示更新文件的意思。
tar -tf all.tar
列出all.tar包中所有文件,-t是列出文件的意思。
tar -xf all.tar
解出all.tar包中所有文件,-x是解开的意思。
所有上述命令都可以加-v,表示show details
以前基本只用tar zxvf,现在发现tar还可以部分解压,比如你这样压缩:tar -czvf ab.tar.gz a.txt b.txt
,然后只想解压其中a.txt,只需要tar -xzvf ab.tar.gz -C /path_untar a.txt
tar默认使用gunzip解压gz文件,还发现一个据说多线程解压的pigz工具,据说可以提速,适用了一下,没感觉。。。
####gzip gzip gunzip分别是gz格式的压缩和解压缩工具,但是其实只用gzip就可以完成压缩和解压缩了,gzip -d选项即解压缩。通常都是对tar打包后的文件做gz压缩。
####grep
新学会一个很好用的-o选项,只列出匹配的内容,这样grep就可以提出一部分字符串了!
还有个利用-f选项比较两个文件差集的,比如grep -F -v -f a b
,意思是b-a的集合
####awk
awk -F 可以指定分割符,默认是空格,已经足以支持大多数情况,例如:awk 'print $0,$1'
意思是对每一行按照空格分隔,然后把$0也就是全部分割列和$1第一列输出到stdout。awk其实很复杂,甚至还支持函数,条件判断之类的。
####sed
sed主要是可以对每一行文本做各种处理。
主要格式是sed [option] 'cmds' file
目前我用到的常见用法有:
sed -n '/abc/p' file
-n不打印,然后p命令又是打印,意思是只打印含有abc的行,当然这里abc可以写正则。sed -n 's/aaa/bbb/gp' file
这里s命令类似vim里的替换命令,意思是把每行的aaa替换成bbb然后输出sed -n 's/\(.*\)aa\(.*\)/\2/g
首先s命令里的pattern把每行匹配出2部分,aa前的是\1,aa后的\2,所以这条命令的意思是用aa后的正则匹配结果替换整行,也就是提取出了aa后的所有,因为sed默认是不改原文件的,所以配合>重定向很容易完成了字符串提取。如果加-i选项则写回原文件。
####comm comm可以求两文件交集,差集等,但是要求文件有序,一般配合sort用。
####iotop(需要apt-get安装下)
查看磁盘读写速度,目前就用到一个-p选项指定查看的进程id。比如iotop -p 110
####ps
新学会用ps查看指定列比如查看进程启动时间start,ps axo pid,start,args
目前就想到这么多,以后想到再加。