내용이 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