CSV 在第三列 KSH 中找到空白值
CSV find blank value in third column KSH
您好,我的数据集很简单,如下所示
4,a,1.5
t,6,,
6,t,h
我正在尝试使用 awk 或 grep 来计算第三列中有空白的行。在这种情况下,它将是 1,因为到目前为止,我在下面尝试过的列中只有中间一个有空白。登录尝试使用 awk 搜索空白字符串,然后使用 grep 查找第三列中有空白的地方进行计数,然后对其进行计数。
COUNT=$('awk '' $DATAFILE | wc -l')
COUNT=$('grep -e '.*,.*,,' $DATAFILE' | wc -l)
awk -F, '==""{c++} END{print c+0}' file
你的 grep 引号太多了:
count=$(grep -E ".*,.*,," $DATAFILE | wc -l)
会有点工作,但您不想匹配第四个字段为空的行。
似乎更好
count=$(grep -E "^[^,]*,[^,]*,," $DATAFILE | wc -l)
这仍然会给输入带来问题,例如
field1,"field 2 with , insides quotes",,
你的问题没有提到这种情况,你认为这里的第三场是什么?那将是另一个问题。
编辑:
@Sundeep 评论正确,您可以使用 grep -c
,避免使用 wc -l
。我试图说明 OP 的回答有什么问题,但我应该添加使用 -c
.
的建议
您好,我的数据集很简单,如下所示
4,a,1.5
t,6,,
6,t,h
我正在尝试使用 awk 或 grep 来计算第三列中有空白的行。在这种情况下,它将是 1,因为到目前为止,我在下面尝试过的列中只有中间一个有空白。登录尝试使用 awk 搜索空白字符串,然后使用 grep 查找第三列中有空白的地方进行计数,然后对其进行计数。
COUNT=$('awk '' $DATAFILE | wc -l')
COUNT=$('grep -e '.*,.*,,' $DATAFILE' | wc -l)
awk -F, '==""{c++} END{print c+0}' file
你的 grep 引号太多了:
count=$(grep -E ".*,.*,," $DATAFILE | wc -l)
会有点工作,但您不想匹配第四个字段为空的行。
似乎更好
count=$(grep -E "^[^,]*,[^,]*,," $DATAFILE | wc -l)
这仍然会给输入带来问题,例如
field1,"field 2 with , insides quotes",,
你的问题没有提到这种情况,你认为这里的第三场是什么?那将是另一个问题。
编辑:
@Sundeep 评论正确,您可以使用 grep -c
,避免使用 wc -l
。我试图说明 OP 的回答有什么问题,但我应该添加使用 -c
.