从unix中的csv文件中删除带有额外分隔符的行

时间:2015-10-14 13:28:09

标签: regex csv unix

我有一个csv文件,其中3列用','分隔符分隔。有些值,在数据中,我想删除整个记录。建议我是否可以使用sed / awk,grep命令来执行此操作。

输入文件:

  • 监视器,显示器,45
  • 键盘,输入,20
  • 响,扬声器,输出,20
  • 安装,输入,20

预期产出:

  • 监视器,显示器,45
  • 键盘,输入,20
  • 安装,输入,20

2 个答案:

答案 0 :(得分:0)

我使用grep命令过滤掉带有额外逗号的行。

grep -v '.*,.*,.*,.*' input_file > output_file.
  1. 我们需要在。*
  2. 之间定义正则表达式模式
  3. -v排除与指定模式匹配的记录。

答案 1 :(得分:0)

以下是使用 awk 执行相同操作的方法,基本上您希望记录正好有3个字段

$ awk -F, 'NF==3 {print $0}' data1.txt
monitor,display,45
keyboard,input,20
mount,input,20