저는 다양한 조합을 시도했지만 성공하지 못했습니다. 이 시점에서 귀하의 도움에 진심으로 감사드립니다.
이 줄 끝을 여러 번(약 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:
그래서 처음부터 시작했는데...
.vcf 파일을 병합했습니다.
UltraEdit에서 열고 LF(CRLF에서)로 저장 -
sed
터미널 없이 시도찾기 및 바꾸기에서 Perl Regex를 선택했습니다.
찾다
(:;)(.*)
바꾸다
\1\2;;;
참고: .*
- 0개 이상의 모든 문자와 일치합니다(개행 제외)...
완벽한!
답변1
필요한 것은 역참조라고 합니다. 그 뜻은"콘테스트에서 선택한 모든 것을 여기에 배치하세요.” 그리고 다음과 같이 작동합니다:
- 문자열의 일부를 선택하려면 일치하는 정규식에 괄호를 사용하세요.
- 번호가 매겨진 역참조를 사용하세요(
\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