제한된 숫자만 포함하도록 텍스트 파일 수정

제한된 숫자만 포함하도록 텍스트 파일 수정

내용이 0에서 100 사이의 숫자인 텍스트 파일 a.txt가 있습니다. 숫자를 10씩 증가시켜 a.txt를 수정하는 명령이 필요하지만 최종 결과는 100보다 작아야 한다는 제약 조건이 있습니다. 즉, 숫자가 100보다 큰 값에 도달하는 경우에만 유지됩니다(예: 95+10= 105) 100).

10까지 줄여주는 명령도 필요한데, 최종 결과가 0 이상이 되려면 비슷해야 합니다.

내가 할 수 있는 일은 echo를 사용하여 파일을 직접 수정하는 것이지만, 이 방법을 사용하면 이전 숫자에 추가하는 대신 숫자를 다른 것으로 바꿀 수 있습니다.

답변1

이렇게 하면 10이 추가됩니다.

echo "$(awk '{x=$0+10;if(x>100)x=100; print x}' a.txt)" > a.txt

이렇게 하면 10이 뺍니다.

echo "$(awk '{x=$0-10;if(x<0)x=0; print x}' a.txt)" > a.txt

$0는 파일에서 읽은 현재 줄의 값이므로 10을 더하거나 뺀 다음 제약 조건 내에 있는지 확인합니다.

훌륭한 주석을 위한 와일드카드 덕분에 임시 파일을 사용하지 않고도 이 작업을 수행할 수 있습니다.

답변2

read bl <a.txt; echo "$((bl<90?bl+10:100))" >a.txt

...100보다 작거나 같은 숫자를 계산하는 줄이 하나만 있으면 a.txt작동합니다. 값을 10으로 설정하면 a.txt대부분의 쉘에서 비어 있는 경우 에도 작동합니다. 반대 논리가 작동합니다.

 read bl <a.txt; echo "$((bl<10?0:bl-10))"  >a.txt

관련 정보