我有一個CSV文件,像這樣:重新排序列由字符串變量
Last,First,A00XXXXXX,1492-12-03,2015-06-23,Sentence Skills 67,Reading Comprehension 59,Elementary Algebra 41
Last,First,A00XXXXXX,1492-12-03,2015-06-23,Sentence Skills 44,Reading Comprehension 40
Last,First,A00XXXXXX,1492-12-03,2015-06-23,Reading Comprehension 39
Last,First,A00XXXXXX,1492-12-03,2015-06-23,Elementary Algebra 41,Sentence Skills 82
Last,First,A00XXXXXX,1492-12-03,2015-06-23,Sentence Skills 104,Elementary Algebra 82
Last,First,A00XXXXXX,1492-12-03,2015-06-23,Sentence Skills 85
Last,First,A00XXXXXX,1492-12-03,2015-06-23,Elementary Algebra 51
Last,First,A00XXXXXX,1492-12-03,2015-06-23,Reading Comprehension 71,Sentence Skills 54,Elementary Algebra 33
Last,First,A00XXXXXX,1492-12-03,2015-06-23,Reading Comprehension 70,Elementary Algebra 23,Arithmetic 42,Sentence Skills 75
Last,First,A00XXXXXX,1492-12-03,2015-06-23,Sentence Skills 96,Reading Comprehension 88
Last,First,A00XXXXXX,1492-12-03,2015-06-23,Elementary Algebra 53,Sentence Skills 97
第5列都是一樣的,最後5列總是以不同的順序。我需要保持前5列相同,並重新排列最後5列,以便始終按以下順序閱讀理解,句子技能,算術,大學水平數學,初等代數
如果其中一個字符串不存在添加逗號
所以最後的結果是這樣的:
awk -F, -v OFS=, '!/Reading Comprehension/ { $5 = $5 "," } 1'
:
Last,First,A00XXXXXX,1492-12-03,2015-06-23,Reading Comprehension 59,Sentence Skills 67,,,Elementary Algebra 41
Last,First,A00XXXXXX,1492-12-03,2015-06-23,Reading Comprehension 40,Sentence Skills 44,,,
Last,First,A00XXXXXX,1492-12-03,2015-06-23,Reading Comprehension 39,,,,
Last,First,A00XXXXXX,1492-12-03,2015-06-23,,Sentence Skills 82,,,Elementary Algebra 41
Last,First,A00XXXXXX,1492-12-03,2015-06-23,,Sentence Skills 104,,,Elementary Algebra 82
Last,First,A00XXXXXX,1492-12-03,2015-06-23,,Sentence Skills 85,,,
Last,First,A00XXXXXX,1492-12-03,2015-06-23,,,,,Elementary Algebra 51
Last,First,A00XXXXXX,1492-12-03,2015-06-23,Reading Comprehension 71,Sentence Skills 54,,,Elementary Algebra 33
Last,First,A00XXXXXX,1492-12-03,2015-06-23,Reading Comprehension 70,Sentence Skills 75,Arithmetic 42,,Elementary Algebra 23
Last,First,A00XXXXXX,1492-12-03,2015-06-23,Reading Comprehension 88,Sentence Skills 96,,,
Last,First,A00XXXXXX,1492-12-03,2015-06-23,,Sentence Skills 97,,,Elementary Algebra 53
如果他們在相同的順序,我可以做這樣的事情總是210
如果他們至少在同一列總是在一起我可以做一個
awk {print $1,$2,$3,$4,$5,$7,$8,$6,$9,$10}
但每一行以不同的順序是和在末端的一些變量扔我一個循環。
我想用AWK來做到這一點,但是我對任何事情都很開放。
從邏輯上來說,我認爲我需要做的是這樣的:J =閱讀*,I =句子*,K =算術*,L =學院*,M =小學*
然後AWK {打印$ 6J, $ 7i,$ 8k,$ 9l,$ 10m}
但是,我的谷歌搜索返回了模擬結果。所以即使評論是看這裏或尋找這個或檢查出這個答案...這將不勝感激
注:我盡了最大努力確保輸入和輸出是正確的。我發佈了另一個類似於這個問題的問題,但那是在列總是以相同的順序時。所以這是一個不同的要求。