Command-Line
處理不同列中逗號分隔值的表
我正在嘗試執行以下操作一段時間但沒有成功。
我收到的數據在每個單獨的列中都有逗號分隔值。第 6 列中逗號之前的第一個值始終與第 7 列中逗號之前的第一個值相關。我想提取數據並將它們按正確的順序放入表中,如下所示:
輸入數據:
1 2 3 4 5 A1,A2 B1,B2 1 7 3 3 5 C1,C2,C3 D1,D2,D3 1 2 R 4 b E1,E2,E3,E4 G1,G2,G3,G4
輸出數據:
1 2 3 4 5 A1 B1 1 2 3 4 5 A2 B2 1 7 3 3 5 C1 D1 1 7 3 3 5 C2 D2 1 7 3 3 5 C3 D3 1 2 R 4 b E1 G1 1 2 R 4 b E2 G2 1 2 R 4 b E3 G3 1 2 R 4 b E4 G4
我知道我需要
\t
在將它們放入排序數組之前將它們拆分,但我對此完全陌生,並且收到瞭如此龐大的數據。
與
awk
:awk '{split($6,a,","); split($7,b,","); for(i in a){print $1,$2,$3,$4,$5,a[i],b[i]}}' file
awk
讀取輸入空格或製表符分隔,預設值:[\t ]+
.
split($6,a,",")
拆分$6
以逗號分隔的第 6 個欄位,
並將輸出儲存在名為a
.
split($7,b,",")
拆分$7
以逗號分隔的第 7 個欄位,
並將輸出儲存在名為b
.
for(i in a)
現在循環遍歷a
數組…
print ...,a[i],b[i]
…並將值列印$1
到$5
兩個數組值a[i]
及其b[i]
索引i
。輸出:
1 2 3 4 5 A1 B1 1 2 3 4 5 A2 B2 1 7 3 3 5 C1 D1 1 7 3 3 5 C2 D2 1 7 3 3 5 C3 D3 1 2 R 4 b E1 G1 1 2 R 4 b E2 G2 1 2 R 4 b E3 G3 1 2 R 4 b E4 G4