如何检查列表文件中的数字是否在增加?
示例列表 1:
658
659
663
Run Code Online (Sandbox Code Playgroud)
会得到“好的”。
示例列表2:
658
664
663
Run Code Online (Sandbox Code Playgroud)
会得到“失败”。
示例列表3:
23
24
25
26
Run Code Online (Sandbox Code Playgroud)
会得到“好的”。
αғs*_*нιη 13
您可以使用sort -nc filename来验证文件是否按递增顺序排列(仅包含数字)。
sort -n -c filename >/dev/null 2>&1 && echo "OK" || echo "FAIL"
Run Code Online (Sandbox Code Playgroud)
或者简而言之(注意上面的-C“ like -c, but do not report first bad line”),还使用-u选项来检查严格的升序以及@StéphaneChazelas建议的-g支持更多数字格式的选项(如+2, 0x10, 1.2e+3, infinity, ... ):
sort -guC filename && echo "OK" || echo "FAIL"
Run Code Online (Sandbox Code Playgroud)
注意:如果您不想在重复的相同数字上报告“失败”,请省略-u上面的选项。
awk 'BEGIN {res = "OK"}
NR > 1 && $1 <= prev {res = "Fail"; exit}
{prev = $1}
END {print res}' file
Run Code Online (Sandbox Code Playgroud)
这个 awk 解决方案应该可以工作。res从一开始就将变量设置为 OK,然后根据变量检查文件中的第一个空格分隔字段prev。如果此行$1小于前一行,则设置res为Fail并停止阅读。最后在脚本的末尾,打印res变量。