从csv中删除仅包含逗号

时间:2017-09-12 10:27:16

标签: regex shell awk sed

我有一个文件,其中有些行只有逗号,没有数据。问题是这些行不会有固定数量的逗号。数据可能如下所示 -

99,abc,123,,
bcd,123,th
,,bcd,123,th
,,,,bcd,123,th
,,,
,,,,,

输出应该看起来像

99,abc,123,,
bcd,123,th
,,bcd,123,th
,,,,bcd,123,th

我必须删除只有逗号的行。

3 个答案:

答案 0 :(得分:2)

awk

awk -F, '!/^,+$/{print}' file

或:

awk -F, '{p=1}/^,+$/{p=0}p' file

答案 1 :(得分:2)

尝试单个grep如下。(否定那些从逗号开始直到结束它们有逗号的行,在所有命令中使用相同的逻辑)

grep -v '^,*$'  Input_file

尝试使用awk解决方案如下。

awk '!/^,*$/'  Input_file

尝试使用sed解决方案。

sed -n '/^,*$/d;p'  Input_file

答案 2 :(得分:1)

grep 将删除所有仅包含逗号(至少一个)的行,并在需要时保留空白行。我相信您的要求只是删除仅包含逗号的行。

grep -v "^,,*$" file

输入

99,abc,123,,
bcd,123,th
,,bcd,123,th
,,,,bcd,123,th


,,,
,,,,,
abc

输出:

99,abc,123,,
bcd,123,th
,,bcd,123,th
,,,,bcd,123,th


abc

如果您想删除空白行,则可以使用:

grep -v "^,*$" file