一行代碼

2018-02-24 16:02 更新

一些命令組合的例子:

  • 當(dāng)你需要對文本文件做集合交、并、差運算時,結(jié)合使用?sort/uniq?很有幫助。假設(shè)?a?與?b?是兩內(nèi)容不同的文件。這種方式效率很高,并且在小文件和上G的文件上都能運用 (sort?不被內(nèi)存大小約束,盡管在?/tmp?在一個小的根分區(qū)上時你可能需要?-T?參數(shù)),參閱前文中關(guān)于?LC_ALL?和?sort?的?-u?參數(shù)的部分。
      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
  • 使用?grep . *?來閱讀檢查目錄下所有文件的內(nèi)容,例如檢查一個充滿配置文件的目錄比如/sys、/proc、/etc

  • 計算文本文件第三列中所有數(shù)的和(可能比同等作用的 Python 代碼快三倍且代碼量少三倍):
      awk '{ x += $3 } END { print x }' myfile
  • 如果你想在文件樹上查看大小\日期,這可能看起來像遞歸版的?ls -l?但比?ls -lR?更易于理解:
      find . -type f -ls
  • 假設(shè)你有一個類似于 web 服務(wù)器日志文件的文本文件,并且一個確定的值只會出現(xiàn)在某些行上,假設(shè)一個?acct_id參數(shù)在URI中。如果你想計算出每個?acct_id?值有多少次請求,使用如下代碼:
      cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn
  • 運行這個函數(shù)從這篇文檔中隨機獲取一條小技巧(解析 Markdown 文件并抽取項目):
      function taocl() {
        curl -s https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md |
          pandoc -f markdown -t html |
          xmlstarlet fo --html --dropdtd |
          xmlstarlet sel -t -v "(html/body/ul/li[count(p)>0])[$RANDOM mod last()+1]" |
          xmlstarlet unesc | fmt -80
      }
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號