Linux用户必知之节省工作时间的技巧(下)
来源:互联网 发布:excel两列相同数据筛选 编辑:程序博客网 时间:2024/04/29 19:28
翻译完了,相信稍微有点经验的程序员,肯定会发现作者总结的很多工具还是很实用的,翻译过来,只想和大家分享。当然,译者英文水平有限,翻译不妥之处在所难免,还望大家批评指正。后续,我会结合自己的工作实践,将其中实用的工具,以示例的方式再总结,好好学习,天天向上!
希望大家多多支持血蝙蝠!
前章地址:Linux用户必知之节省工作时间的技巧(上)
数据处理:
- 掌握sort和uniq(包括uniq命令的-u和-d选项)
- 掌握操作文本文件的cut,paste和join命令。很多人用过cut但忘记了join
- 通过sort和uniq对文本文件做集合的交、并、差等操作是很有用的。假设a和b是两个已经去重的文本文件。以下情况快速高效,可以作用于任何大小的文件。(sort命令不受内存限制,如果/tmp挂在在一个很小的root分区上,你可以使用-T选项来解决问题)
cat a b | sort | uniq > c # c 是 a 和 b 的并集
cat a b | sort | uniq -d > c # c 是 a 和b的交集
cat a b b | sort | uniq -u > c # c 是a-b差集
- 要知道locale命令影响很多命令行工具,包括sort的顺序和性能。大多说Linux发行版都会设置LANG或者其他本地变量为本地语言设置,比如US ENGLISH。这可能会使sort或者其他命令运行速度降低好几倍。(注意,使用utf-8可以安全地以ASCII码序进行排序)。关闭i18n的支持,采用传统的按字节序排序的方式,可以加快排序。使用方法是LC_ALL=C(通常考虑将这个设置放在.bashrc文件中).
- 掌握用于数据处理的基本awk和sed命令。举例来说,求取第三个字段值得累加和:awk '{ x += $3 } END {print x}'. 这条命领可能比等价的python指令快3倍,而代码量却可能是python的1/3.
- 替换一个文件中某个字符串的所有出现:
perl -pi.bak -e 's/old-string/new-string/g' my-files-*.txt
- 使用shuf命令来打乱一个文件内的所有行和随机选取文件中的任意行
- 掌握sort的选项。掌握怎么按关键字查询(比如-t和-k选项)。特别地,sort -k1,1是按第一个字段排序所有行,而sort -k1是按一整行排序。
- 稳定排序可以使用sort -s。举例来说,先使用第一个字段排序,第一个字段相同则按第二个字段排序,可以使用如下命令:sort -k1,1 | sort -s -k2,2
- 如果想在命令行输入制表符tab(比如使用sort的-t参数),可以使用ctrl-v或者直接键入$'\t'。
- 对于二进制文件,可以使用hd进行16进制显示其内容,或者使用bvi来编辑二进制文件。
- 同样是对于二进制文件,strings命令(结合grep命令等)可以用来查找二进制中的文本段。
- 转换文本文件的编码,可以使用iconv命令。或者使用uconv命令来处理更为高级的转码任务。比如,下面的命令将大写转为小写,并去掉重音符号:
uconv -f utf-8 -t utf-8 -x ’::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC; ' < input.txt output.txt
- 切分文件可以使用split和csplit命令。前者按文件大小(size)切分,后者按模式规则(pattern)切分。
- 通过以下命令可以快速了解磁盘,cpu和网络的状态:iostat,netstat,top/htop,dstat。
- 要了解内存的状态,可以使用free和vmstat命令。特别地,cached的值是Linux内核为文件缓存保留的内存部分,有效的内存值是free的值。
- java系统调试是件截然不同的事情,但是一个简单的技巧是,在sun公司或者其他的JVM上,你可以使用kill -3来打印栈追踪和堆的摘要信息(包括垃圾收集器的细节信息)到标准错误或者日志文件。
- mtr命令比traceroute还要强大,可以用来识别网络中出现的问题。
- 查找磁盘为什么满了,ncdu命令比“du -sk *”要节省时间。
- 查看哪个套接字或者进程占着带宽,可以使用iftop或者nethogs命令。
- ab工具是Apache附带的web服务器性能应急工具,要进行更复杂的负载测试,可以使用siege命令。
- 针对更为棘手的网络调试,可以使用wireshark或者tshark。
- 掌握strace和ltrace命令。如果一个程序挂掉了,你却不知道原因,后者你想了解程序的性能,这两个工具非常有用。配置选项-c,和绑定一个运行中的进程的能力-p。
- 掌握ldd检查动态链接库。
- 掌握如何用gdb调试一个运行中的进程,以及获取进程的栈信息。
- 使用/proc,在调试在线问题时很有用。比如,/proc/cpuinfo,/proc/xxx/cwd,/proc/xxx/exe,/proc/xxx/fd/,/proc/xxx/smaps.
- 在调试过去为什么会出问题的内容是,sar命令很有用。该命令可以显示cpu、内存、网络等的历史统计信息。
- 对于进一步的系统或性能分析,请查看stap(systemtap)和perf命令。
- 如果出现硬件或驱动的某些奇妙问题,可以尝试使用dmesg命令。
英文原文PDF下载地址:http://download.csdn.net/detail/challenge_c_plusplus/6542415
其它类似内容: 《掌握Sed命令》
《掌握Awk命令》
- Linux用户必知之节省工作时间的技巧(下)
- Linux用户必知之节省工作时间的技巧(上)
- 每个Linux用户必知的省时技巧
- 系统管理必知的linux技巧
- 创业者必知的互联网思维之用户思维
- 网站优化策略之SEO必知的七大技巧
- 必知的CSS技巧
- 多因子模型之因子(信号)测试平台----python中Pandas做处理时内存节省的技巧
- Eclipse中节省时间的技巧
- 嵌入式:节省内存的软件设计技巧
- 节省你学习时间的百余个谷歌小技巧
- 一个节省空间的小技巧
- 嵌入式:节省内存的软件设计技巧
- 嵌入式:节省内存的软件设计技巧
- linux必知的60个命令(下)
- linux 下vim的使用(必看)
- linux 下vim的使用(必看)
- linux 下vim的使用(必看)
- RMAN 配置归档日志删除策略
- MySQL中时间-->数字转换和IP地址-->数字转换
- 判别模型、生成模型和朴素贝叶斯模型
- poj 1364—— King(差分约束,spfa)
- OCP-1Z0-053-V12.02-8题
- Linux用户必知之节省工作时间的技巧(下)
- 回归分析方法比较
- nor flash与nand flash的区别
- SVM
- 数据结构与算法系列-树-二叉树的遍历(按层次遍历)
- After Applying JDBC Driver Patch (6779501) , Problem still occurs (ORA-28040) (Doc ID 1267169.1)
- Ruby on rails 实战圣经:Ruby程序语言入门
- 水池数目
- java中TreeMap的迭代