在日常開發(fā)中, 通常會(huì)寫一些自動(dòng)化的腳本尤勋, 特別是文本自動(dòng)化的腳本經(jīng)常寫浴栽。 而linux commands 在完成自動(dòng)化工作的作用特別大肚吏。?
下面我會(huì)總結(jié)一下我使用過的Linux commands吮蛹。?
1. 文件查看命令: cat , more , less, tail 和 head 荤崇。 這幾個(gè)命令都可查看一個(gè)文件, 但是功能略微不同潮针。 cat 適合查看一個(gè)較小的文件天试。 more 和 less 可以自動(dòng)分頁, 所以適合查看比較大的文件然低, 并且提供了上一頁和下一頁的翻頁功能。 tail 和 head 也是很常見的查看命令务唐, tail 用于查看文件末尾雳攘, head 用于查看文件開頭。
2. 文本編輯命令:? sed, awk枫笛。 這兩個(gè)命令在文本自動(dòng)化工作方面赫赫有名吨灭。 sed 用于文本自動(dòng)化的增刪改查, sed最重要的功能就是基本正則表達(dá)式的文本替換刑巧。 awk 的側(cè)重點(diǎn)則不同喧兄, awk的優(yōu)勢(shì)在于處理固定格式的文件无畔, 如 csv。 awk 可以進(jìn)行數(shù)據(jù)的 過濾, 聚集吠冤,如可以求和浑彰, 也可以求平均值, 適用于數(shù)據(jù)分析拯辙。如果要簡單的實(shí)現(xiàn)一個(gè)對(duì)賬系統(tǒng)郭变, sed 和 awk 是一個(gè)很好的選擇。?
3. 其他文件編輯命令: cut, tr涯保。? cut 用于提取文件中每一行的一部分字符串诉濒, 例如一個(gè)csv文件, 可以用cut 提取某一個(gè)field夕春。 tr 可以進(jìn)行文本的替換未荒, 可以把tr當(dāng)做低級(jí)版的sed。 如 tr "abc" "xyz"及志, 這個(gè)命令就把字符串中的a 替換成 x, b 替換成 y, c 替換成 z?
4. 文本比較命令: comm, diff片排。? comm 用于比較兩個(gè)文件 common content 和 different content, 對(duì)賬系統(tǒng)通常會(huì)用到這個(gè)命令困肩。? diff 和 comm 很類似划纽, 用于比較兩個(gè)文件的不同之處, 通承炕可以用來作為文件的版本控制勇劣。?
5. 文本的拆分和合并: split, csplit, join。? split 和 csplit 都可以用于拆分一個(gè)文件為若干個(gè)小文件潭枣。 split 可以基于文件大小拆分比默, csplit 可以基于正則表達(dá)式拆分。 join 類似于關(guān)系型數(shù)據(jù)庫的join 操作盆犁, 把相同的行join 起來命咐。?
6. 與目錄有關(guān)的命令: basename, dirname。 這兩個(gè)命令接受的輸入都是一個(gè)目錄字符串谐岁, basename 返回文件名 醋奠, dirname 返回當(dāng)前文件的目錄。?
7. 排序和去重: sort , uniq伊佃。 sort 用于文本的排序窜司, 如獲取某個(gè)目錄下的最大文件, 就可以用sort航揉。 uniq 則用于去重塞祈。
8. 統(tǒng)計(jì)單詞數(shù)量: wc? 用于統(tǒng)計(jì)文本單詞數(shù)量 或者字符數(shù)量。?
9. xargs:這個(gè)命令是非常強(qiáng)大的帅涂,通常跟find 或者grep 組合起來使用议薪。 如要?jiǎng)h除所有的log 文件 find -type f "*log" | xargs rm?
10. 文件文本的搜索: find 和 grep尤蛮。? 文本搜索是非常常用的功能, find 支持搜索文件斯议, grep 支持搜索文本产捞。?