SED、TR、またはAWKを使用して最初の文字を大文字にします。

SED、TR、またはAWKを使用して最初の文字を大文字にします。

倫理的侵入テストに使用する潜在的なパスワードを含む巨大なテキストファイルがあります。与えられたパスワードの最初の文字を大文字として使用して、より多くのパスワードバリアントを取得したいと思います。以前使ったことがあります。

sed -e "s/\b\(.\)/\u\1/g"

そして

sed 's/\b\([[:alpha:]]\)\([[:alpha:]]*\)\b/\u\1\L\2/g'

最初の文字を大文字で表示するか(最初の例)、最初の文字を大文字にし、残りの文字を小文字にします(2番目の例)。しかし、今新しい問題が発生しました。私のソースファイルは次のとおりです。

password
p@ssword
123password
!!123password
!@#000password

私は出力が次のようになります:

Password
P@ssword
123Password
!!123Password
!@#000Ppassword

sedtrまたは、awk最初の文字に焦点を当てて、それが数字または記号であることを確認し、単語を変更せずに続行するのではなく、最初のaz文字を見つけて大文字で表示するのに十分賢くする必要があります。

これを行う方法はありますか?

ベストアンサー1

sed大丈夫です。省略すると、デフォルトでは最初の一致のみが置き換えられるためです。Gグローバル修飾子:

sed 's/\([[:alpha:]]\)/\U\1/'

ただし、通常、これは手動ではなくクラッキングツールが自動的に実行するようにします。ルール有効です。

おすすめ記事