數(shù)據(jù)處理
了解 sort 和 uniq 命令 (包括 uniq 的 -u 和 -d 選項(xiàng)).
了解用 cut, paste, 和 join 命令來(lái)操作文本文件。很多人忘了在cut前使用join。
如果你知道怎么用sort/uniq來(lái)做集合交集、并集、差集能很大地促進(jìn)你的工作效率。假設(shè)有兩個(gè)文本文件a和b已解被 uniq了,那么,用sort/uniq
會(huì)是最快的方式,無(wú)論這兩個(gè)文件有多大(sort不會(huì)被內(nèi)存所限,你甚至可以使用-T選項(xiàng),如果你的/tmp目錄很小)
代碼
cat a b | sort | uniq > c # c is a union b 并集
cat a b | sort | uniq -d > c # c is a intersect b 交集
cat a b b | sort | uniq -u > c # c is set difference a - b 差集
了解和字符集相關(guān)的命令行工具,包括排序和性能。很多的Linux安裝程序都會(huì)設(shè)置LANG 或是其它和字符集相關(guān)的環(huán)境變量。這些東西可能會(huì)讓
一些命令(如:sort)的執(zhí)行性能慢N多倍(注:就算是你用UTF-8編碼文本文件,你也可以很安全地使用ASCII來(lái)對(duì)其排序)。如果你想Disable那個(gè)
i18n 并使用傳統(tǒng)的基于byte的排序方法,那就設(shè)置export LC_ALL=C (實(shí)際上,你可以把其放在 .bashrc)。如果這設(shè)置這個(gè)變量,你的sort命令
很有可能會(huì)是錯(cuò)的。
了解 awk 和 sed,并用他們來(lái)做一些簡(jiǎn)單的數(shù)據(jù)修改操作。例如:求第三列的數(shù)字之和: awk ‘{ x += $3 } END { print x }’。這可能會(huì)比
Python快3倍,并比Python的代碼少三倍。
使用 shuf 來(lái)打亂一個(gè)文件中的行或是選擇文件中一個(gè)隨機(jī)的行。
了解sort命令的選項(xiàng)。了解key是什么(-t和-k)。具體說(shuō)來(lái),你可以使用-k1,1來(lái)對(duì)第一列排序,-k1來(lái)對(duì)全行排序。
Stable sort (sort -s) 會(huì)很有用。例如:如果你要想對(duì)兩例排序,先是以第二列,然后再以第一列,那么你可以這樣: sort -k1,1 | sort -s -k
2,2
我們知道,在bash命令行下,Tab鍵是用來(lái)做目錄文件自動(dòng)完成的事的。但是如果你想輸入一個(gè)Tab字符(比如:你想在sort -t選項(xiàng)后輸入
字符),你可以先按Ctrl-V,然后再按Tab鍵,就可以輸入字符了。當(dāng)然,你也可以使用$’\t’。
如果你想查看二進(jìn)制文件,你可以使用hd命令(在CentOS下是hexdump命令),如果你想編譯二進(jìn)制文件,你可以使用bvi命令(深圳專業(yè)嵌入式
實(shí)訓(xùn)QQ1075349026)
另外,對(duì)于二進(jìn)制文件,你可以使用strings(配合grep等)來(lái)查看二進(jìn)制中的文本。
對(duì)于文本文件轉(zhuǎn)碼,你可以試一下 iconv。或是試試更強(qiáng)的 uconv 命令(這個(gè)命令支持更高級(jí)的Unicode編碼)
如果你要分隔一個(gè)大文件,你可以使用split命令(split by size)和csplit命令(split by a pattern)。