簡體   English   中英

使用 miller 時,是否可以將 CSV 的多列重命名為空列名?

[英]Is it possible to rename multiple columns of a CSV to empty columns name when using miller?

我有帶有這樣標題的 CSV 文件

MyFirstCol,MySecondCol,MyThirdCol,.....MyLastRealCol,ppp,qqq,rrr

我想將pppqqq等列設置為帶有空標題的列。 (我不想刪除它們!)所以我想要一個帶有這樣標題的結果 CSV:

MyFirstCol,MySecondCol,MyThirdCol,.....MyLastRealCol,,,

(注意最后是空的但存在的列。)

有沒有辦法用米勒做到這一點?(*)我試過了

mlr --csv rename -r '"^(.){3}$",' myFile.csv

但是這個命令將所有匹配的列折疊成一列 :-(


(*) 我知道如何在sed使用 search-replace 命令來破解它,但我不喜歡它作為通用解決方案,因為sed不知道 CSV 的列結構。 因此,我希望與米勒一起解決。

如果我理解正確,只需刪除空列

mlr --csv remove-empty-columns input.csv >output.csv

如果要使用重命名,命令是

mlr --csv rename -r '^.{3}$,' input.csv >output.csv

請注意,在 Miller 中,您不能擁有包含兩個或多個同名字段的 CSV。 如果你有

MyFirstCol,MySecondCol,MyThirdCol,.....MyLastRealCol,,,

最后一個字段具有相同的空字段名稱。 然后您可以添加一個數字漸進式標題,然后對第一個數據行應用搜索和替換,最后刪除數字標題。

從...開始

field1,field2,ppp,qqq,zzz
1,2,,,
4,7,,,

和跑步

mlr --csv -N put -S 'if(NR==1){for (k in $*) {$[k] = gsub($[k], "^.{3}$", "");}}' input.csv

你將會擁有

field1,field2,,,
1,2,,,
4,7,,,

幾點:

  • -N添加和刪​​除數字標題;
  • if(NR==1)將 put 動詞僅應用於此處是field1,field2,ppp,qqq,zzz第一個數據行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM