Columns
如何分隔不同行中的第一列內容
我的輸入數據有 5 列,由選項卡分隔:
Class1,Class2 info1 info2 info3 info4 Class3 info1a info2a info3a info4a Class4,Class5 info1b info2b1,info2b2 info3b info4b
當我在第一列中有用逗號分隔的數據時,我想將其用來自第 2-5 列的具有相同資訊的不同行分隔,例如:
Class1 info1 info2 info3 info4 Class2 info1 info2 info3 info4 Class3 info1a info2a info3a info4a Class4 info1b info2b1,info2b2 info3b info4b Class5 info1b info2b1,info2b2 info3b info4b
我不知道該怎麼做。有什麼建議嗎?
awk解決方案:
awk '$1~/.+,.+/{ split($1,a,","); $1=""; sub(/^ */,"",$0); for(i=1;i<=length(a);i++) print a[i],$0; next }1' file
輸出:
Class1 info1 info2 info3 info4 Class2 info1 info2 info3 info4 Class3 info1a info2a info3a info4a Class4 info1b info2b1,info2b2 info3b info4b Class5 info1b info2b1,info2b2 info3b info4b
$1~/.+,.+/
- 如果第一列包含逗號分隔的項目,則處理行split($1,a,",")
- 將第一列拆分為項目數組
perl -F'\t' -lane '$,="\t"; print $_, @F for split /,/, splice @F, 0, 1; ' yourfile
結果
Class1 info1 info2 info3 info4 Class2 info1 info2 info3 info4 Class3 info1a info2a info3a info4a Class4 info1b info2b1,info2b2 info3b info4b Class5 info1b info2b1,info2b2 info3b info4b