通过 sed 删除 CSV 中带有空字段的行

通过 sed 删除 CSV 中带有空字段的行

我有一个包含两列的 CSV 文件。第一个是 ID (int),第二个是文本。所有行都有 ID 列。我想删除第二列为空(零长度或仅空格)的文件。

我试过

sed -i '/^[0-9]+,\s*$/d' file.csv

但它不起作用。

答案1

您需要转义+或使用\{1,\}或添加-E扩展正则表达式:

sed -i '/^[0-9]\+,\s*$/d' file.csv
sed -i '/^[0-9]\{1,\},\s*$/d' file.csv
sed -Ei '/^[0-9]+,\s*$/d' file.csv

或者使用grep

grep -v '^[0-9]\+, *$' file.csv

但是,我更喜欢一个合适的 csv 解析器:

csvgrep -S -c2 -r '.' file.csv

相关内容