我有以下格式的数据::
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脚本来迭代字符串并对其进行排序?
答案 0 :(得分:3)
暂时将信息拆分为多行,以便您进行排序:
tr ^ \\n | sort | tr \\n ^
注意:如果你有多个条目,你必须编写一个循环,每行处理它..使用庞大的数据集这可能不是一个好主意(太慢),在这种情况下选择一种编程语言..但你问的是贝壳......
答案 1 :(得分: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