【问题标题】:Bash : Check if file is sorted with sort -c fileBash:检查文件是否使用 sort -c file 排序
【发布时间】:2020-08-06 01:35:53
【问题描述】:

与

sort -c file

我收到了第一个未排序为报告的坏行,如果文件已排序,则什么也没有。 (并且 sort -c 不对文件进行排序。)

我想检查我是否收到报告。 事情是这样的:

if [ $(sort -c file) == *something* ]
then
    echo wasn't sorted
    sort file
    ...
else
    echo already sorted
    ...
fi

有可能吗,怎么做?

使用 -C 而不是 -c 的问题相同(如果使用“静默”选项不同或不同)...

【问题讨论】:

  • 检查是否已排序,然后排序将花费比仅排序更长的时间。
  • @dawg 我知道,在我的情况下,支票几乎不会被应用......

标签: bash sorting


【解决方案1】:

这里是同样的概念,只是有一点语法糖。

sort -C file || echo -n "not " ; echo "sorted"

我更喜欢 Cyrus 使用的格式,我只是想提供一个有趣的版本。

这是一个符合 posix 的版本(由 anishsane 建议):

sort -C file || printf "not " ; echo "sorted"

【讨论】:

  • 这是一个完整的脚本项目,所以我不需要它,但我知道你在那里做了什么。谢谢
  • 我很内疚我也使用echo -n,但请注意echo -n 不可移植。 echo 的某些版本不支持 -n 并按字面意思打印。如有疑问,请使用与 posix 兼容的 printf "%s" "text"。
  • 这非常适合放入 for 循环,谢谢。
【解决方案2】:
if sort -C file; then
  # return code 0
  echo "sorted"
else
  # return code not 0
  echo "not sorted"
fi

【讨论】:

  • 正如 Cyrus 所建议的,您只需检查 sort -C 命令的退出代码。
猜你喜欢
  • 2012-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-09
  • 2012-07-06
  • 1970-01-01
  • 2011-07-24
  • 1970-01-01
相关资源
最近更新 更多