일부 텍스트 파일의 내용을 변경하려면 스크립트가 필요합니다. 이것은 나의 제한된 bash 기술을 약간 넘어서는 것입니다. Perl이나 Python이 더 나은 접근 방식일 수도 있지만, 둘 중 하나에 대한 경험이 없습니다.
보고서에서 생성된 텍스트 파일이 많이 있습니다. 일부 파일에 오류가 포함되어 있어 오류 열을 $0.00의 통화 값으로 바꿔야 합니다. 새 값은 동일한 파일에 보고된 다른 값의 두 배여야 합니다.
수정해야 하는 파일 이름에는 "Summary"라는 단어가 포함되어 있습니다. 파일 이름에 "Summary"가 없으면 파일을 무시해야 합니다.
이러한 파일에는 "범주 X 비용 가격: $0.00" 줄이 포함되어 있습니다. 여기서 X는 숫자입니다. $0.00은 X가 0(영)인 경우에만 바꿔야 하며, X의 다른 값은 파일을 무시해야 합니다. "Category 0 Cost Price: $0.00"라는 문자열이 존재하는지 확인하여 이를 식별하고 싶습니다.
"카테고리"로 시작하는 다른 라인은 여기서 중요하지 않으며 무시해야 합니다(예: "카테고리 X 판매 가격: $0.00", 다른 라인도 존재함).
여기서는 "범주 X 비용 가격: $0.00"만 중요합니다. 이 행의 값은 항상 $0.00이며 X가 0인 경우에만 수정하면 됩니다.
새 값은 "비용" 값에 2를 곱한 값입니다.
아래 예시와는 달리 관심 행이 특정 행 번호로 고정되어 있지 않습니다. "비용"이 항상 두 번째 줄에 있는 것은 아니며, "범주 X 비용 가격"이 항상 네 번째 줄에 있는 것은 아닙니다.
예:
파일:1234 abstract.text
Some data
Cost: $15.73
Line of data
Category 0 cost price: $0.00,
Category 0 sale price: $0.00,
Category 4 list price: $44.95,
More data
"범주
파일 수정: 1234 Summary.text
Some data
Cost: $15.73
Line of data
Category 0 cost price: $31.46,
Category 0 sale price: $0.00,
Category 4 list price: $44.95,
More data
파일:2468 abstract.text
Some data
Cost: $1.32
Line of data
Category 12 cost price: $0.00,
Category 5 sale price: $4.75,
Category 0 list price: $4.75,
More data
범주
요약하려면 "Summary"라는 단어가 포함된 파일 이름을 반복하고 "Category 0 Price: $0.00" 문자열이 있으면 "0.00"을 "Cost: $X.XX" 행의 두 배 값으로 바꿉니다. 그렇지 않으면 파일이 무시됩니다.
수정된 파일 목록도 필요합니다. 파일 이름을 별도의 텍스트 파일에 추가하는 것이 좋을 것입니다.
답변1
이것TXR 불분명한 음성솔루션이 저에게 효과적이었습니다.
#;
주석 기호를 사용하여 (rename-path ...)
각 임시 파일의 이름을 다시 원래 이름으로 바꾸는 표현식을 비활성화합니다. 파일 내용이 괜찮아 보이면 #;
기호를 제거하여 내부 교체를 활성화합니다 .tmp
. .tmp
변경 사항이 없으면 파일을 삭제하는 것이 좋습니다.
(each ((file (glob "*Summary.txt")))
(let ((cost 0.0))
(flow
(file-get-lines file)
(mapcar (do match-case @1
(`Cost: $@val`
(set cost (flo-str val))
@1)
("Category 0 cost price: $0.00,"
(pic "Category 0 cost price $#.##," (* 2 cost)))
(@else @1)))
(file-put-lines `@file.tmp`))
#;(rename-path `@file.tmp` file)))