다음과 같이 편집할 작은 시가 많이 있습니다.
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.