【问题标题】:Using sort with space as a field separator使用带空格的排序作为字段分隔符
【发布时间】:2016-02-14 13:17:15
【问题描述】:

我正在尝试使用sort 命令对以空格分隔的字符串中的整数进行排序。例如8 6 5 7 9 56 -20 - 10。我在标准输出上收到字符串。我尝试了所有这些但没有任何效果:

sort -t' '
sort -t ' '
sort -t " "
sort -t" "
sort -t=" "

【问题讨论】:

  • 来自man sort: "排序的文本"

标签: bash sorting


【解决方案1】:
echo "8 6 5 7 9 56 -20 - 10" | tr ' ' '\n' | sort -n

Sort 只能对行进行排序。

【讨论】:

    【解决方案2】:

    您可以先将字符串读入以空格为分隔符的数组,然后使用sort 进行进程替换:

    s='8 6 5 7 9 56 -20 - 10'
    read -ra arr <<< "$s"
    sort -n <(printf "%s\n" "${arr[@]}")
    

    输出:

    -20
    -10
    5
    6
    7
    8
    9
    56
    

    再次将输出存储在字符串中:

    read -r str < <(sort -n <(printf "%s\n" "${arr[@]}") | tr '\n' ' ')
    

    并检查输出:

    declare -p str
    declare -- str="-20 -10 5 6 7 8 9 56"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-18
      • 2019-12-10
      • 1970-01-01
      相关资源
      最近更新 更多