bash 挿入機能に対応する短い "csvgrep"

bash 挿入機能に対応する短い

質問:いくつかの行をgrepするための良い「直接」置換データセット特定の列に特定のキーワードを含むファイル。

要件:より複雑なcsvファイルのサポート - 二重引用符、改行が含まれています。

ユースケース: "csvkit"は素晴らしいですが、数行しか把握するのはおそらくあまりにも多くのことです。

とても良いことがあります。csvkit仕事データセット以下を含むファイルcsvgrep。しかし、時々私たちがスクリプトを書いている環境にcsvkitがインストールされておらず、数行だけがgrepingされるので、すべてをインストール/コンパイルすることが重複することがあります。データセット文書。

ベストアンサー1

  • -1:python2が必要です。
  • +1:python2はcsvkitよりも一般的です。

バッシュ挿入機能:

function csvgrep(){
grep_criteria="$1"
matchcolumn="$2"
python2 -c "import csv, sys
rows = list(csv.reader(sys.stdin))
writer = csv.writer(sys.stdout)
writer.writerow(rows[0])
for row in rows[1:]:
  if row[${matchcolumn}] == '${grep_criteria}':
    writer.writerow(row)"
}

使用法:

csvgrep 'valueInLastColumn' '-1' < in.csv > out.csv

おすすめ記事