文件及數(shù)據(jù)處理

2018-02-24 16:02 更新
  • 在當前路徑下通過文件名定位一個文件,find . -iname '*something*'(或類似的)。在所有路徑下通過文件名查找文件,使用?locate something?(但請記住?updatedb?可能沒有對最近新建的文件建立索引)。

  • 使用?ag?在源代碼或數(shù)據(jù)文件里檢索(比?grep -r?更好)。

  • 將HTML轉(zhuǎn)為文本:lynx -dump -stdin

  • Markdown,HTML,以及所有文檔格式之間的轉(zhuǎn)換,試試?pandoc。

  • 如果你不得不處理 XML,xmlstarlet?寶刀未老。

  • 使用?jq?處理 JSON。

  • Excel 或 CSV 文件的處理,csvkit?提供了?in2csv,csvcut,csvjoin,csvgrep?等工具。

  • 關于 Amazon S3,s3cmd?很方便而?s4cmd?更快。Amazon 官方的?aws?是其他 AWS 相關工作的基礎。

  • 了解如何使用?sort?和?uniq,包括 uniq 的?-u?參數(shù)和?-d?參數(shù),詳見后文一行代碼節(jié)。另外可以了解一下?comm。

  • 了解如何使用?cut,paste?和?join?來更改文件。很多人都會使用?cut,但幾乎都不會使用?join。

  • 了解如何運用?wc?去計算新行數(shù)(-l),字符數(shù)(-m),單詞數(shù)(-w)以及字節(jié)數(shù)(-c)。

  • 了解如何使用?tee?將標準輸入復制到文件甚至標準輸出,例如?ls -al | tee file.txt

  • 了解語言環(huán)境對許多命令行工具的微妙影響,包括排序的順序和性能。大多數(shù) Linux 的安裝過程會將?LANG?或其他有關的變量設置為符合本地的設置。意識到當你改變語言環(huán)境時,排序的結果可能會改變。明白國際化可能會時 sort 或其他命令運行效率下降許多倍。某些情況下(例如集合運算)你可以放心的使用?export LC_ALL=C?來忽略掉國際化并使用基于字節(jié)的順序。

  • 了解?awk?和?sed?關于數(shù)據(jù)的簡單處理的用法。例如,將文本文件中第三列的所有數(shù)字求和:awk '{ x += $3 } END { print x }'. 這可能比同等作用的 Python 代碼塊三倍且代碼量少三倍。

  • 替換一個或多個文件中出現(xiàn)的字符串:
      perl -pi.bak -e 's/old-string/new-string/g' my-files-*.txt
  • 依據(jù)某種模式批量重命名多個文件,使用?rename。對于復雜的重命名規(guī)則,repren?或許有幫助。
      # Recover backup files foo.bak -> foo:
      rename 's/\.bak$//' *.bak
      # Full rename of filenames,directories,and contents foo -> bar:
      repren --full --preserve-case --from foo --to bar .
  • 使用?shuf?從一個文件中隨機選取行。

  • 了解?sort?的參數(shù)。處理數(shù)字方面,使用?-n?或者?-h?來處理可讀性數(shù)字(例如?du -h?的輸出)。明白鍵的工作原理(-t?和?-k)。例如,注意到你需要?-k1,1?來僅按第一個域來排序,而?-k1?意味著按整行排序。穩(wěn)定排序(sort -s)在某些情況下很有用。例如,以第二個域為主關鍵字,第一個域為次關鍵字進行排序,你可以使用sort -k1,1 | sort -s -k2,2。

  • 如果你想在 Bash 命令行中寫 tab 制表符,按下?ctrl-v?[Tab]?或鍵入?$'\t'?(后者可能更好,因為你可以復制粘貼它)。

  • 標準的源代碼對比及合并工具是?diff?和?patch。使用?diffstat?查看變更總覽數(shù)據(jù)。注意到?diff -r?對整個文件夾有效。使用?diff -r tree1 tree2 | diffstat?查看變更總覽數(shù)據(jù)。

  • 對于二進制文件,使用?hd?使其以十六進制顯示以及使用?bvi?來編輯二進制。

  • 同樣對于二進制文件,使用?strings(包括?grep?等等)允許你查找一些文本。

  • 二進制文件對比(Delta 壓縮),使用?xdelta3。

  • 使用?iconv?更改文本編碼。而更高級的用法,可以使用?uconv,它支持一些高級的 Unicode 功能。例如,這條命令將所有元音字母轉(zhuǎn)為小寫并移除了:
      uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC; ' < input.txt > output.txt
  • 拆分文件,查看?split(按大小拆分)和?csplit(按模式拆分)。

  • 使用?zless,zmore,zcat?和?zgrep對壓縮過的文件進行操作。
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號