목록 파일의 숫자가 증가하는지 확인하는 방법은 무엇입니까?
예시 목록 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