저는 gedit 정규식 플러그인(Python 스타일 정규식)을 사용하고 있습니다. 일련의 역참조에 대해 산술 연산을 수행하고 싶습니다.
예를 들어:
PART 1 DATA MODELS Chapter
2 Entity-Relationship Model 27
나는 그것을로 바꾸고 싶다
PART 1 DATA MODELS Chapter 25
2 Entity-Relationship Model 27
내 정규식은 ^(PART.*)\n(.*\s(\d+))\n
이고 이를 로 바꾸고 싶습니다 \1 \3-2\n\2\n
. 그러나 대체 정규식은 올바르지 않습니다.
답변1
지금은 gedit에 관심이 없지만 vim
정규식의 산술은 쉽습니다. 예를 들어:
:%s/\d\+/\=submatch(0)+25/g
각 정수를 찾아 25를 더합니다.
또한보십시오여기유사한 문제에 대한 Perl 솔루션.
답변2
내 이해는 각 행의 끝에 'PART'
다음 행의 마지막 숫자에서 2를 뺀 값을 더하고 싶다는 것입니다. 그렇다면 다음을 통해 수행할 수 있습니다 'awk'
.
awk '!/^PART/{print}/^PART/{
getline next_line;
match(next_line, "[^ ]*$");
print $0 " " substr(next_line, RSTART) - 2;
print next_line}' <your file>
'PART'
이 스크립트는 입력 파일의 마지막 줄이 로 시작하지 않고 , 로 시작하는 줄 뒤의 줄 'PART'
끝에 공백과 숫자가 포함된다는 가정 하에 실행됩니다 . 필요한 경우 오류 검사를 추가할 수 있습니다.