2015-10-14 123 views
-1

我有一個csv文件,其中3列用','分隔符分隔。在數據中有一些值,我想刪除整個記錄。建議如果我可以使用sed/awk,grep命令來做到這一點。從unix中的csv文件中刪除帶有額外分隔符的行

輸入文件:

  • 監視器,顯示器,45
  • 鍵盤,輸入,20
  • 響亮,揚聲器,輸出20
  • 安裝,輸入,20

預期產出:

  • 監視器,顯示器,45
  • 鍵盤,輸入,20
  • 安裝,輸入,20
+0

你嘗試什麼記錄? – npinti

+0

使用正則表達式可以更容易地提取有效的東西,而不是擦除不正確的東西。例如,在PHP中,可以使用'preg_match_all()'使用該正則表達式'/(?:(?:\ w +,){2} \ w +)/ m'來提取數組中的所有有效行並迭代該數組將數據推回到新文件中。仍然在PHP中,如果在獲取數據後關閉初始連接,則可以覆蓋CSV文件。 –

回答

0

我用grep命令過濾掉額外逗號行。

grep -v '.*,.*,.*,.*' input_file > output_file. 
  1. 我們需要定義之間的正則表達式。*
  2. -v排除匹配指定的模式,其記錄。
0

下面是如何使用AWK做同樣的,基本上你想在其中恰好有3場

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