我有这样的文本文件:
1 http http 3 4 5
2 dns dns 4
3 ftp ftp 4 5 6 8
Run Code Online (Sandbox Code Playgroud)
我希望输出如下:
1 HTTP http 3 4 5
2 DNS dns 4
3 FTP ftp 4 5 6 8
Run Code Online (Sandbox Code Playgroud)
我想将第二个字段从小写改为大写,只改为第二个字段.
请注意,某行中的字段数不固定.
我可以使用这个目标awk
吗?
你确定可以.这是如何做:
awk '$2 = toupper($2)' file
Run Code Online (Sandbox Code Playgroud)
结果:
1 HTTP http 3 4 5
2 DNS dns 4
3 FTP ftp 4 5 6 8
Run Code Online (Sandbox Code Playgroud)
从手册:
tolower的(STR)
返回字符串str的副本,其中str中的所有大写字符都转换为相应的小写对应字符.非字母字符保持不变.
TOUPPER(STR)
返回字符串str的副本,其中str中的所有小写字符都转换为相应的大写字母对应项.非字母字符保持不变.
我假设给定样本数据,它至少有三列,并且您讨论的变量组件适用于包含单词的列之后的列.如果我错了,你可以简单地添加条件:
awk 'NF>1 { $2 = toupper($2) }1' file
Run Code Online (Sandbox Code Playgroud)