Ash*_*har 0 awk string case-sensitivity
我在 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
Run Code Online (Sandbox Code Playgroud)
我希望仅将第一列转换为小写并将更改保存到同一文件中。
我没有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
Run Code Online (Sandbox Code Playgroud)
这只是将$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
Run Code Online (Sandbox Code Playgroud)
要就地编辑文件,您可以使用 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
Run Code Online (Sandbox Code Playgroud)