Awk
僅將文件中的第一列轉換為小寫
我在 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”找到了解決方案你能建議嗎?
這是一個簡單的方法:
$ 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