awk/sed は、文字列の最初と最後の大文字のインデックスを探します。

awk/sed は、文字列の最初と最後の大文字のインデックスを探します。

次のようないくつかの文字列があります。

例ストリング1

--AbbbAnde---

例文字列2

abksjiRNNBBKUGFLYFYLF

例文字列3

-ankNUGUYUBUIGCafrg--

例ストリング4

BNKJUGFVULNK-Kew---

PS:大文字のゼロまたは1つの文字列がありません。

何千ものファイルがあり、Pythonは時間がかかるので、awk、sed、または他のbashプログラムを介して上記の例のような文字列の最初と最後の大文字のインデックスを探したいと思います。最初の大文字のインデックスは、最初から最後まで(左から右に)計算する必要があります。そして、最後の大文字のインデックスは、最後から始まり(右から左)として計算する必要があります。

例えば、

たとえば、string1の場合、最初の大文字はAで、インデックスはサム左から右へ(開始から終了まで)。最後の大文字はAで、インデックスは7最後から最初まで。

たとえば、string2の場合、最初の大文字はRで、インデックスは7左から右へ(開始から終了まで)。最後の大文字はFで、インデックスは1最後から最初まで。

たとえば、string3の場合、最初の大文字はNで、インデックスは5左から右へ(開始から終了まで)。最後の大文字はCで、インデックスは7最後から最初まで。

たとえば、string4の場合、最初の大文字はBで、インデックスは1左から右へ(開始から終了まで)。最後の大文字はKで、インデックスは6最後から最初まで。

ご協力ありがとうございます。

ベストアンサー1

awk '
{
    start = match($0, /[A-Z]/)
    end   = match($0, /[A-Z][^A-Z]*$/)
    print (start ? start : "NaN"), (end ? length() - end + 1 : "NaN")
}' infile

おすすめ記事