UltraEdit - 정규식 대체

UltraEdit - 정규식 대체

저는 다양한 조합을 시도했지만 성공하지 못했습니다. 이 시점에서 귀하의 도움에 진심으로 감사드립니다.

이 줄 끝을 여러 번(약 300회) 교체해야 하며 하나씩 수행하는 것은 고통스러울 것입니다.

:;XXXXXX (lenght may vary)

나는 그것을 찾을 수 있었고 :;*$그것은 나에게 필요한 것을 정확히 강조했습니다! 하지만 교체할 수는 없으므로 다음과 같습니다.:;XXXXXX;;;

*- 무엇이든 일치해야 합니다.

$- 줄 끝과 일치해야 합니다(그렇습니다).

다른 모든 것과 마찬가지로 *괄호 안에 넣으려고 했지만 소용이 없었습니다. 물론 대체가 이루어지지만 입력과 동일한 형식입니다. 예를 들어... 대신에 나는 그것을 얻습니다 - 그것이 내가 얻을 수 있는 최선입니다.(*); [*]:;(*);;;$:;XXXXXX;;;:;*;;;

이는 UltraEdit 정규식 형식이지만 이 소프트웨어는 Unix 및 Perl 정규식도 처리할 수 있습니다.

당신이 이것을 제안할 수 있는 어떤 방식으로든 시도해 보겠습니다(터미널, 기타 소프트웨어 등).

편집하다:

기존 Nokia에서 새 Nokia(s30+ 시리즈)로 연락처를 이전하려고 합니다. backup.nbu에서만 .vcf 연락처를 얻었습니다. .txt를 통해 파일에 넣었습니다 cat *.vcf > combined.vcf. 전체 프로세스를 수행해야 하는 Excel 매크로와 PHP 스크립트를 찾았지만 작동하지 않았습니다. 하지만 모두 그다지 관련이 없는 것 같습니다. 그러다가 이 특정 모델이 처리할 수 있는 Vcard 형식을 발견했습니다. 이제 똑같이 보이도록 수정하려고 합니다. 선을 바꾸는 것은 문제가 없지만 끝 부분을 편집해야 합니다. 이름 바꾸지 ;:NAME마세요 ...;:NAME;;;

위에서 설명한 방법을 시도했습니다. 그 후 나는 제안을 시도했습니다 sed -ri "s/\:\;X+$/&\;\;\;/g".

나는 DOS 줄 끝이 문제일 수 있다고 확신했기 때문에 다음을 실행 sed -i 's/\r//g' combined.vcf한 다음 제안된 sid 명령을 다시 실행했습니다.

에서:N;CHARSET=UTF-8;ENCODING=8BIT:ALFA

도착하다:N;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8:;ALFA;;;

편집 2:

그래서 처음부터 시작했는데...

  1. .vcf 파일을 병합했습니다.

  2. UltraEdit에서 열고 LF(CRLF에서)로 저장 - sed터미널 없이 시도

  3. 찾기 및 바꾸기에서 Perl Regex를 선택했습니다.

    • 찾다(:;)(.*)

    • 바꾸다\1\2;;;

참고: .*- 0개 이상의 모든 문자와 일치합니다(개행 제외)...

완벽한!

답변1

필요한 것은 역참조라고 합니다. 그 뜻은"콘테스트에서 선택한 모든 것을 여기에 배치하세요.” 그리고 다음과 같이 작동합니다:

  1. 문자열의 일부를 선택하려면 일치하는 정규식에 괄호를 사용하세요.
  2. 번호가 매겨진 역참조를 사용하세요( \1첫 번째 대괄호, \2두 번째 대괄호 등).

sed이를 지원하면 다음 명령이 생성됩니다( sed대괄호를 이스케이프해야 하지만 다른 정규식 기반 소프트웨어에서는 그렇지 않을 수 있음).

sed -i 's/^\(:;.*\)$/\1;;;/' combined.vcf

답변2

그것을 사용하는 sed것은 다음과 같이 할 수 있습니다:

echo ":;XXXXXX" | sed -re "s/\:\;X+$/&\;\;\;/g"

파일에서 데이터를 가져올 때 다음을 사용하여 파일 내에서 직접 편집할 수 있습니다.

sed -ri "s/\:\;X+$/&\;\;\;/g" file.txt

관련 정보