短的“csvgrep”相当于 bash 插入函数

短的“csvgrep”相当于 bash 插入函数

问题:很好的“直接”替换来 grep 一些行数据集某些列中包含某些关键字的文件。

要求:支持更复杂的 csv 文件 - 有双引号、换行符。

用例:“csvkit”很棒,但仅 grep 几行可能太多了。

有非常好的csvkit与一起工作数据集文件,其中包括csvgrep。但有时,我们正在编写脚本的环境没有安装 csvkit,并且安装/编译所有内容可能对于仅 grep 几行来说是多余的数据集文件。

答案1

  • -1:需要python2
  • +1:python2比csvkit更常见

bash 插入函数:

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

相关内容