2013-06-28 63 views
1

字符串我有一些數據的格式如下::排序字符串分隔符,如UNIX

Info-programNumber!/TvSource/11100001_233a_32c0/13130^Info-channelName!5 USA^Info-Duration!1575190^Info-programName!CSI: ab cd 

Delimiter = Info- 

我試圖根據升序排列分隔字符串進行排序。但我的解決方案都沒有工作。

預期結果:

Info-channelName!5 USA^Info-Duration!1575190^Info-programName!CSI: ab cd^Info-programNumber!/TvSource/11100001_233a_32c0/13130 

是否有任何命令,讓我做到這一點還是我需要寫一個awk腳本來遍歷字符串和排序呢?

+2

不是分隔符''^? –

回答

0

可以在AWK本身來完成:

awk -F "^" '{OFS="^"; for (i=1; i<=NF; i++) a[i]=$i} 
      END {n=asort(a, b); for(i=1; i<=n; i++) printf("%s%s", b[i], FS); print ""}' file 
+0

其working..Great..Many謝謝.. – user2531569

+0

如果這個答案幫助您解決問題,請考慮將其標記爲「接受」,所以今後面臨類似的問題,用戶將可以很容易地看到它。 – anubhava

3

暫時拆分信息爲多行,所以你可以排序:

tr^\\n | sort | tr \\n^

注意:如果你有多個條目,你必須寫一個循環,它處理它每行..巨大的數據集,這是可能不是一個好主意(太慢),在這種情況下,選擇一個編程語言..但是你問的是殼...