Text-Processing
刪除 CSV 文件中每個欄位中的重複模式/條目
如何使用以下範例作為數據刪除每個單獨欄位中的重複條目。
0x,9.4,,,#0,#UNIX#unix,#cli#L#فا#0#فا#0#L#SE#Cli#SE,#فارسی#فارسی#۱#1#١#1,bsh,#V & v
預期輸出(刪除所有重複的,不區分大小寫,Unicode“波斯語
#۱
/阿拉伯語#١
”的差異,條目的順序以及應該保留哪個條目(忽略大小寫)在這裡無關緊要):0x,9.4,,,#0,#unix,#cli#L#فا#0#SE,#فارسی#١#۱#1,bsh,#V & v
模式採用這種格式
#x
,x
表示一個或多個字元長度的任何內容。
在帶有適當csv解析器的 shell 中使用perl命令行(只需幾行):
perl -CS -Mopen=":std,IN,OUT,IO,:encoding(utf8)" -MText::CSV -lne ' BEGIN{ our $csv = Text::CSV->new({ sep_char => "," }); sub uniq { my %seen; grep !$seen{lc $_}++, @_; } }; $csv->parse($_) or die "parse error"; print join ",", map { join "#", uniq split /#/ } $csv->fields(); ' file.csv
輸出 :
0x,9.4,,,#0,#UNIX,#cli#L#فا#0#SE,#فارسی#۱#1#١,bsh,#V & v
筆記 :
- 需要安裝
Text::CSV
perl 模組:sudo apt-get install libtext-csv-perl
適用於 debian 和衍生產品