![여러 TXT 파일에서 소수점 + 100](https://linux55.com/image/132985/%EC%97%AC%EB%9F%AC%20TXT%20%ED%8C%8C%EC%9D%BC%EC%97%90%EC%84%9C%20%EC%86%8C%EC%88%98%EC%A0%90%20%2B%20100.png)
나는 이것에 대해 혼란스러워서 도움이 필요합니다. 한 폴더에 여러 개의 txt 파일이 있습니다. 이 텍스트 파일에는 일부 내용이 있습니다. 이제 텍스트 "moveLimit":30,
(소수점 뒤에 쉼표)가 있습니다. 그러면 어떻게 100
여러 파일에 움직이는 소수점을 모두 추가하고 저장할 수 있나요? 움직임은 가 아니며 30
각 텍스트 파일의 임의의 숫자입니다. 모두 10-999 사이입니다.
{"gameModeName":"Classic moves","moveLimit":106,"numberOfColours":6,"portals":[],"protocolVersion":"0.3","randomConfig":{"mode":"Seed Pool","modeModifier":"Tutorial Only","overrideAbTest":true,"seedPool":[547787]},"randomSeed":1088126,"scoreTargets":[300,400,500],"tileMap":[["000","000","000","000","000","000","000","000","000"],["000","000","000","000","000","000","000","000","000"],["002005","002005","002005","002005","002005","002005","002005","002005","000"],["002","002","002","002","002","002","002","002","000"],["002","002","002","002","002","002","002","002","000"],["002","002","002","002","002","002","002","002","000"],["002","002","002","002","002","002","002","002","000"],["000","000","000","000","000","000","000","000","000"],["000","000","000","000","000","000","000","000","000"]]}
답변1
처음에 파일이 실제로 JSON 파일이라고 말하면 txt
(예제에서 볼 수 있듯이) 모든 것이 변경되고 대부분의 질문/댓글이 차단됩니다.
jq
이것이 올바른 접근 방식이므로 적절한 JSON 도구를 사용하십시오 .
for f in *.txt; do
if grep -q '"moveLimit":[0-9]*,' "$f"; then
jq -c '.moveLimit |= . + 100' "$f" > tmp_f && mv tmp_f "$f"
fi
done
답변2
GNU 또는 FreeBSD 시스템에서는 다음을 시도해 볼 수 있습니다:
grep -rl --null '"moveLimit":[0-9]' . |
xargs -r0 perl -pi -e 's/"moveLimit":\K\d+/$& + 100/ge'
grep
r
l
현재 디렉터리( )에서 십진수 뒤에 십진수( 의 경우 -delimited)가 포함된 파일을 반복적으로 나열합니다..
"moveLimit":
null
xargs -0
xargs -r0
이 파일 목록을 다음으로 전달하세요.perl
perl
파일i
n 비트를 편집하고 일련의 숫자(\d+
뒤에"moveLimit":
같은 숫자($&
) + 100)를 바꿉니다.