2 番目の単語が小文字で始まらない (実際には、小文字ではない文字で始まる) 行を出力するには、以下を使用します。
env LANG=C LC_ALL=C awk '$2 ~ /^[^a-z]/' filename
または、その出力を別のファイルにリダイレクトするには
env LANG=C LC_ALL=C awk '$2 ~ /^[^a-z]/' originalfile > newfile
各行の 2 番目の単語の最初の文字を大文字にするには、次を使用します。
env LANG=C LC_ALL=C awk '{ $2 = toupper(substr($2,1,1)) substr($2,2) } 1' filename
または、別のファイルにリダイレクトするには、
env LANG=C LC_ALL=C awk '{ $2 = toupper(substr($2,1,1)) substr($2,2) } 1' originalfile > newfile
originalfile
==は使用しないでください。機能しnewfile
ないためです。シェルは> newfile
、コマンドが開始される前に、最初にファイルをクリアします (出力がリダイレクトされるため)。空のファイルになってしまいます。
このenv LANG=C LC_ALL=C
追加により、GNU awk と非 POSIX ロケールを使用している場合が回避されます。小文字だけでなく、あらゆる文字にgawk
一致します。[a-z]
ロケールを意識した動作がmawk
必要な場合は、 の^[^[:lower:]]
代わりにgawk 以外の awk を使用して^[^a-z]
ください。