繁体   English   中英

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

[英]How can I change a certain field of a file into upper-case using 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)

返回字符串str的副本,其中str中的所有大写字符都转换为相应的小写对应字符。 非字母字符保持不变。

TOUPPER(STR)

返回字符串str的副本,其中str中的所有小写字符都转换为相应的大写字母对应项。 非字母字符保持不变。


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

awk 'NF>1 { $2 = toupper($2) }1' file
perl -F -ane '$F[1] = lc($F[1]);print "@F"' your_file

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM