RedHatには、次のデータを含むファイルがあります。
$ cat hello.txt
mumdfw2as123v USER=wladmin MOUNTPOINT=/apps
MUMFW2as97v.mrshmc.com USER=wladmin MOUNTPOINT=/apps
MUMFW3AS65V USER=user MOUNTPOINT=DR-/u
MUMDFW3AS66V USER=oracle MOUNTPOINT=/u
mumdfw3AS69v_oracle ansible_host=mumdfw3as69v USER=oracle MOUNTPOINT=/web
最初の列だけを小文字に変換し、変更を同じファイルに保存したいと思います。
nawk
「nawk」を使って解決策を見つけたので、ツールはありません。
何か提案してもらえますか?
ベストアンサー1
簡単な方法は次のとおりです。
$ awk -F'[ ]' '{$1=tolower($1)}1' file
mumdfw2as123v USER=wladmin MOUNTPOINT=/apps
mumfw2as97v.mrshmc.com USER=wladmin MOUNTPOINT=/apps
mumfw3as65v USER=user MOUNTPOINT=DR-/u
mumdfw3as66v USER=oracle MOUNTPOINT=/u
mumdfw3as69v_oracle ansible_host=mumdfw3as69v USER=oracle MOUNTPOINT=/web
これは$1
(最初のフィールド)を小文字に変更します。1
最後はawk
「この行を印刷してください」の略です。興味深いことに、-F'[ ]'
入力フィールドの区切り文字を空白に設定しましたが、これは正規表現(文字クラス)として表示されるため、awkは入力行を再計算するため、入力フィールドの元の間隔を維持できます。入力ファイル。それなしで私達は次を得ます:
$ awk '{$1=tolower($1)}1' file
mumdfw2as123v USER=wladmin MOUNTPOINT=/apps
mumfw2as97v.mrshmc.com USER=wladmin MOUNTPOINT=/apps
mumfw3as65v USER=user MOUNTPOINT=DR-/u
mumdfw3as66v USER=oracle MOUNTPOINT=/u
mumdfw3as69v_oracle ansible_host=mumdfw3as69v USER=oracle MOUNTPOINT=/web
ファイルを適切に編集するには、GNUを使用できますawk
(Linuxシステムではデフォルト)。
$ gawk -F'[ ]' -i inplace '{$1=tolower($1)}1' file
$ cat file
mumdfw2as123v USER=wladmin MOUNTPOINT=/apps
mumfw2as97v.mrshmc.com USER=wladmin MOUNTPOINT=/apps
mumfw3as65v USER=user MOUNTPOINT=DR-/u
mumdfw3as66v USER=oracle MOUNTPOINT=/u
mumdfw3as69v_oracle ansible_host=mumdfw3as69v USER=oracle MOUNTPOINT=/web