텍스트 파일의 특정 단어를 바꾸려면 sed 스크립트 도움말이 필요합니다.

텍스트 파일의 특정 단어를 바꾸려면 sed 스크립트 도움말이 필요합니다.

sed저는 루마니아어 텍스트나 기타 적합한 Unix 도구를 사용하여 특정 텍스트 대체 작업을 자동화하려고 합니다. 이것은 내 요구 사항입니다.

  1. 문자의 모든 인스턴스를 내부 단어 â로 바꿉니다.î
  2. 어근이 "român"인 단어(예: "Românească", "româneşte" 등)는 변경되지 않은 상태로 유지되어야 합니다.
  3. "sunt"라는 단어는 "sînt"로 바꿔야 합니다.

예를 들어:

입력하다:

până
împământenit
român
Românească
sunt
cugetând

예상 출력:

pînă
împămîntenit
român
Românească
sînt
cugetînd

여러 스크립트를 시도했지만 sed그 중 어느 것도 동시에 모든 요구 사항을 충족하지 못했습니다. 누구든지 나를 안내할 수 있나요? 어떤 도움이나 조언이라도 감사하겠습니다!

답변1

설명해주신 대로,

sed '/[rR]omân/!s/â/î/g;s/sunt/sînt/g'

다음 작업이 완료됩니다.

  • s/â/î/gubstiture가 s모두 ( g부분적으로) 나타나는지 â여부î
  • "주소" /[rR]omân/가 반대 !이므로 이 패턴이 포함된 줄에서는 다음 명령이 작동하지 않습니다.
  • s/sunt/sînt/g결국 성분의 일부로 단어를 대체했습니다.

참고: 귀하의 예에서는 ă교체됩니다. 이것이 필요한 경우

sed '/[rR]omân/!s/[âă]/î/g;s/sunt/sînt/g'

답변2

사용행복하다(이전 Perl_6)

~$ raku -ne 'S:g/â/î/ andthen                                  \
             S:samecase:g/ (<[rR]>om) (î) (n) /$0â$2/ andthen  \
             S:g/sunt/sînt/ andthen .put;'    file

입력 예:

până
împământenit
român
Românească
sunt
cugetând

예제 출력:

pînă
împămîntenit
român
Românească
sînt
cugetînd

-neRaku에는 자동 인쇄가 아닌 명령줄 플래그가 있습니다 . 교체시 Raku의 "big-S" S///표기법을 사용할 수 있습니다결과 문자열 반환.

andthen주제 변수( )는 커넥터 위에 다시 로드되므로 $_각 후속 S///작업은 이전에 수정된 텍스트에 적용됩니다. 마지막 절은 andthen .put주제 변수( $_)를 다시 로드하고 최종 텍스트( .putyes 의 약어 $_.put)를 인쇄합니다.

특수 문자를 잘라내거나 붙여넣는 시간을 절약할 수 있도록 유니코드 이름을 사용하는 것이 좋습니다. 따라서 라쿠에서 첫 번째 모음 치환은 실제로 다음과 같이 쓸 수 있습니다.

S:g/\c[LATIN SMALL LETTER A WITH CIRCUMFLEX]/\c[LATIN SMALL LETTER I WITH CIRCUMFLEX]/

https://raku.org

관련 정보