簡體   English   中英

Bash腳本OSX:拆分CSV

[英]Bash script OSX : split CSV

我把這個字符串存儲在一個文件中:

ID1,A,B,,,,F
ID2,,,,D,E,F
ID3,,B,C,,,,

我需要像這樣改造:

ID1,A
ID1,B
ID1,F
ID2,D
ID2,E
...

我嘗試使用循環和IFS(如IFS =“,”;聲明-a Array =($ *))whitout success。

有人知道怎么做嗎?

非常直接的Awk

awk 'BEGIN{FS=OFS=","}{first=$1; for (i=2;i<=NF;i++) if (length($i)) print first,$i}' file

將輸入和輸出字段分隔符設置為,將第一個字段分別存儲在第first變量中,並打印其余的非空字段。

正如用戶@PS所建議的那樣。 下面你也可以這樣做,

awk -F, '{for(i=2;i<=NF;i++) if(length($i)) print $1 FS $i}' file
awk -F, '{for (i=2; i<=NF; i++) if($i != "") print $1","$i}' File

ID1,A
ID1,B
ID1,F
ID2,D
ID2,E
ID2,F
ID3,B
ID3,C

對於每個行,作為字段分隔符,從第2nd字段循環到last字段。 如果current field不為空,則打印第first fieldIDx )並將current field分隔為a ,

暫無
暫無

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

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