仅将文件中的第一列转换为小写

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”找到了解决方案

你能建议吗?

ter*_*don 8

这是一个简单的方法:

$ 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)