1

我有以下格式的一些数据:

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 脚本来遍历字符串并对其进行排序?

4

2 回答 2

3

暂时将信息拆分为多行,以便您可以排序:

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

注意:如果您有多个条目,则必须编写一个循环,每行处理它.. 对于庞大的数据集,这可能不是一个好主意(太慢),在这种情况下选择一种编程语言.. 但你在问关于贝壳...

于 2013-06-28T11:24:42.670 回答
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
于 2013-06-28T11:36:45.630 回答