] 後ろの最初の文字を大文字に変更します。

] 後ろの最初の文字を大文字に変更します。

次の何千もの行を含むCSVファイルがあります。

bla bla blab [FR] john is bla bla
bla [US] blue house in Chicago...
[ES] accessing the safe... bla bla

間の要素を確認してください[ ]。これらの要素の後には、常にスペースと新しいフレーズの先頭が続きます。ファイルが次のように見えるように、スペースの後ろの最初の文字を大文字に変換したいと思います。

bla bla blab [FR] John is bla bla
bla [US] Blue house in Chicago...
[ES] Accessing the safe... bla bla

sed、awk、または他の手段を使用して端末でこれをどのように実行しますか?

解決策を説明してください。理解して学びたいです。

ありがとうございます。

ベストアンサー1

POSIXlyでは、次のことができます。

awk -F '] ' '{
  out = $1
  for (i = 2; i <= NF; i++)
    out = out FS toupper(substr($i, 1, 1)) substr($i, 2)
  print out}' < infile

または:

awk '
  BEGIN {FS = OFS = "] "}
  {
    for (i = 2; i <= NF; i++)
      $i = toupper(substr($i, 1, 1)) substr($i, 2)
    print
  }' < infile

これはフィールド区切り文字"] "として定義され、F各フィールドの最初の文字(ndから始まりフィールド番号まで)を変換してからSフィールドを再結合します。2NFNFto upper

(ただし、FreeBSD awk(およびmacOS)を含む一部の実装はまだ国際化されていないため、事前設定された形式(U + 00E9)に変更(またはifに変更)することはできません。mawkawk[GR] π[GR] Π[FR] éric[FR] Éricé

おすすめ記事