次のように編集する小さな詩がたくさんあります。
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
今回は、ファイルの1つの段落(少なくとも1つの空白行で区切られた段落)を読み、ピリオドと改行の後に表示されるすべての文字を大文字で表示します。
答え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.