Csv
使用 CsvKit 截斷 CSV 列
如何使用 CSVKit 截斷列的長度?
定義如下所示:
- 第一欄:無長度限制
- 第 2 列:<不超過 2 個字元>
這應該正確處理轉義(引用)的列和新行。
例如:
First Header,Second Header foo, foo,b foo,bar foo,"bar" foo,"""bar" foo," bar"
應該成為
First Header,Second Header foo, foo,b foo,ba foo,ba foo,"""b" foo," b"
這是使用 csvsql 的解決方案:
csvsql -d ',' --query 'SELECT "First Header" as "First Header",substr("Second Header",1,2) as "Second Header" FROM data' data.txt
First Header,Second Header foo, foo,b foo,ba foo,ba foo,"""b" foo," b"
除非另有說明,否則我認為 CSVKit 無法直接實現。但是,我知道這可以用Miller完成:
mlr --csv put '${Second Header} = substr(${Second Header},0,1)' file.csv
輸出
First Header,Second Header foo, foo, foo,ba foo,ba foo,"""b" foo," b"
(如果您使用的是 Miller 版本 6 或更高版本,則有更好和首選的替代方案
substr
。我無法在此處對其進行測試,因此我不會將它們包括在內。)