リストファイルの数が増えるかどうかを確認するには?
例リスト1:
658
659
663
「わかりました」を取得します。
例リスト2:
658
664
663
「失敗」が発生します。
例リスト3:
23
24
25
26
「わかりました」を取得します。
答え1
これを使用して、sort -nc filename
ファイルが増分順序(数字のみを含む)であることを確認できます。
sort -n -c filename >/dev/null 2>&1 && echo "OK" || echo "FAIL"
または、短く(上記の-C
「注」like -c, but do not report first bad line
)-u
厳密な昇順を確認するオプションと、提案されているように、より多くの数値形式(たとえば、、、、、、...)をサポート-g
するオプションも使用します。+2
0x10
1.2e+3
infinity
@StéphaneChazelas:
sort -guC filename && echo "OK" || echo "FAIL"
メモ:同じ番号の重複について「失敗」を報告したくない場合は、上記の-u
オプションを無視してください。
答え2
awk 'BEGIN {res = "OK"}
NR > 1 && $1 <= prev {res = "Fail"; exit}
{prev = $1}
END {print res}' file
このawkソリューションは機能するはずです。変数をres
最初から「OK」に設定し、prev
その変数に基づいてファイル内の最初のスペースで区切られたフィールドを確認します。この行が前の行$1
より小さい場合は、res
に設定してFail
読み取りを停止します。最後に、res
スクリプトの最後に変数を印刷します。
答え3
もう一つの秘訣はjoin
注文する:
join --check-order file file &>/dev/null && echo "OK" || echo "FAIL"
テスト:
$ cat a1
11
33
22
$ join --check-order a1 a1 &>/dev/null && echo "OK" || echo "FAIL"
FAIL
$ cat a2
11
22
33
$ join --check-order a2 a2 &>/dev/null && echo "OK" || echo "FAIL"
OK