加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 如何使用awk将文件的某个字段更改为大写?

发布时间:2020-12-14 01:15:09 所属栏目:Linux 来源:网络整理
导读:我有这样的文本文件: 1 http http 3 4 5 2 dns dns 4 3 ftp ftp 4 5 6 8 我希望输出如下: 1 HTTP http 3 4 5 2 DNS dns 4 3 FTP ftp 4 5 6 8 我想将第二个字段从小写改为大写,只改为第二个字段. 请注意,某行中的字段数不固定. 我可以用awk实现这个目标吗?
我有这样的文本文件:

1 http http 3 4 5 
2 dns dns 4 
3 ftp ftp 4 5 6 8

我希望输出如下:

1 HTTP http 3 4 5 
2 DNS dns 4 
3 FTP ftp 4 5 6 8

我想将第二个字段从小写改为大写,只改为第二个字段.

请注意,某行中的字段数不固定.

我可以用awk实现这个目标吗?

解决方法

你确定可以.这是如何做:

awk '$2 = toupper($2)' file

结果:

1 HTTP http 3 4 5
2 DNS dns 4
3 FTP ftp 4 5 6 8

从手册:

tolower(str)

Returns a copy of the string str,with all the upper-case
characters in str translated to their corresponding lower-case
counterparts. Non-alphabetic characters are left unchanged.

??
??TOUPPER(STR)
??
??

Returns a copy of the string str,with all the lower-case
characters in str translated to their corresponding upper-case
counterparts. Non-alphabetic characters are left unchanged.

我假设给定样本数据,它至少有三列,并且您讨论的变量组件适用于包含单词的列之后的列.如果我错了,你可以简单地添加条件:

awk 'NF>1 { $2 = toupper($2) }1' file

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读