通過shell將乙個檔案劃分為多個檔案

2021-09-25 10:48:18 字數 1246 閱讀 8980

原始檔名為test.xt,檔案內容如下

sort a # 3|4

sort a # 2|5

sort b # 1|2

sort b # 2|5

分割後的檔案

file1

sort a # 3|4

sort a # 2|5

file2

sort b # 1|2

sort b # 2|5

這個其實很簡單,就是遍歷每一行的時候,在把該行的內容,輸出到第二列字元對應的檔案即可gawk -f' ' '' test.txt,正確結果的內容就不做展示了。

此文的答案都是有問題的,答案中的語句awk '!a[$2]++' inputfile在原檔案中a、b不是排序好出現的時候,結果就是錯誤的(當然,可以對原檔案按照第二列的內容排序後,再使用此語句也是可以得出正確結果的)。

例如,輸入檔案修改為如下

sort a # 3|4

sort b # 2|5

sort a # 1|2

sort b # 2|5

那麼對應的輸出為

file1

sort a # 3|4
file2

sort b # 2|5

sort a # 1|2

sort b # 2|5

gawk中字串的拼接,直接拼接即可,不能使用+號。

在使用+號的時候,是會出現異常的。在使用該命令的時候gawk '' test.txt,輸出的結果如下

000

0

shell中陣列直接使用即可,不必賦初值。這個和許多程式語言都不相同

gawk ' end} ' test.txt的結果如下

a 2

b 2

做乙個知識型討飯的,有些閒錢的,覺得對你有用的可以捐點

將乙個整數劃分為多個正整數之和

整數劃分問題是將乙個正整數n拆分成一組數連加並等於n的形式,顯然這組數中最大加數不大於n。令n為需要劃分的整數,m為劃分後的最大整數。例如將6劃分為最大加數為6的劃分形式如下 5 1 4 2,4 1 1 3 3,3 2 1,3 1 1 1 2 2 2,2 2 1 1,2 1 1 1 1 1 1 1 ...

將乙個整數劃分為多個正整數之和

整數劃分問題是將乙個正整數n拆分成一組數連加並等於n的形式,顯然這組數中最大加數不大於n。令n為需要劃分的整數,m為劃分後的最大整數。例如將6劃分為最大加數為6的劃分形式如下 65 1 4 2,4 1 1 3 3,3 2 1,3 1 1 1 2 2 2,2 2 1 1,2 1 1 1 1 1 1 1...

將乙個陣列劃分為和差值最小的子陣列

思路 很容易知道如果選取的某個子陣列的和currentsum sum 2,則這兩個子陣列的和的差值最小,即從陣列中選取某些數字使得其和接近整個陣列的1 2.所以該命題本質上是乙個01揹包命題,原命題等價於從n各物品中選取若干個,其重量不超過sum 2,且重量達到最大 基於上述思路 如下 includ...