이전 줄의 마침표 다음 줄의 첫 글자를 대문자로 표시합니다.

이전 줄의 마침표 다음 줄의 첫 글자를 대문자로 표시합니다.

다음과 같이 편집할 작은 시가 많이 있습니다.

Io avevo due sorelle,
una bionda e l’altra mora,
tutte e due leggiadre e belle
e gentil come l’aurora.
ma la bionda mi è sparita,
se ne è andata all’altra vita.
mi hanno detto che lassù
più risplende il suo bel viso
dove è gioia ed è sorriso
ma non tornerà mai più.
e la mora sta lontana,
nella terra pascoliana.
colgo e bacio il primo fiore:
il pensier quel bacio porta
su la viva e su la morta,
tutte e due lo stesso amore.

이탈리아어 문법 규칙에 따르면 이전 절의 마침표 다음에 절이 시작되면 첫 글자를 대문자로 표시합니다. 다음과 같아야 합니다(예를 들어 5행에서 마침표 뒤의 대문자를 참조하세요).

Io avevo due sorelle,
una bionda e l’altra mora,
tutte e due leggiadre e belle
e gentil come l’aurora.
Ma la bionda mi è sparita,
se ne è andata all’altra vita.
Mi hanno detto che lassù
più risplende il suo bel viso
dove è gioia ed è sorriso
ma non tornerà mai più.
E la mora sta lontana,
nella terra pascoliana.
Colgo e bacio il primo fiore:
il pensier quel bacio porta
su la viva e su la morta,
tutte e due lo stesso amore.

sed를 사용하여 이 작업을 수행하는 데 문제가 있습니다. 어떻게 해결할 수 있나요? sed보다 더 정확한 방법을 아시나요? 저도 관심이 있습니다.

답변1

GNU sed에는 대문자 기능이 있습니다\U

sed -e '
  $!N
  s/\.\n./\U&/
  P;D
' file

답변2

펄 사용:

perl -00 -pe 's/\.\n./\U$&/g' file

이번에는 파일의 한 단락(적어도 하나의 빈 줄로 구분된 단락)을 읽고 마침표와 줄 바꿈 뒤에 나타나는 모든 문자를 대문자로 표시합니다.

답변3

printf '%s\n' 'g/\.$/+1s/./\u&/' '%p' | ex file
  • g/\.$/마침표가 있는 줄을 모두 선택하세요.

  • +1s선택한 각 항목의 다음 줄에 다음 바꾸기 명령을 적용합니다.

  • \u교체 슬롯의 다음 문자를 대문자로 표시&"정규식과 일치하는 모든 항목"에 대한 메타 문자입니다 .

  • %p모든 결과 라인을 인쇄합니다.

노트

  • 이 명령은 예상 결과를 표준 출력으로 인쇄합니다. 실제로 파일을 편집하려면 "쓰기 및 종료" 명령을 사용하십시오.

    printf '%s\n' 'g/\.$/+1s/./\u&/' x | ex file
    
  • 정규식은 /\.$/마지막 마침표 뒤에 공백이 있는 줄을 캡처하지 않습니다. 이 상황을 해결하려면 대신 를 사용하십시오 /\. *$/.

답변4

사용sed

$ sed '/\.$/{n;s/^[a-z]/\U&/}' input_file
Io avevo due sorelle,
una bionda e l’altra mora,
tutte e due leggiadre e belle
e gentil come l’aurora.
Ma la bionda mi è sparita,
se ne è andata all’altra vita.
Mi hanno detto che lassù
più risplende il suo bel viso
dove è gioia ed è sorriso
ma non tornerà mai più.
E la mora sta lontana,
nella terra pascoliana.
Colgo e bacio il primo fiore:
il pensier quel bacio porta
su la viva e su la morta,
tutte e due lo stesso amore.

관련 정보