如何使用awk提取各单词最后一个字符拼接为字符串
问题解答
1. 未知单词长度时取最后一个字符的实现方法
awk内置了length()函数可以动态获取任意字符串的长度,配合substr()函数就能精准取到最后一个字符,语法格式为:substr(目标字符串, length(目标字符串), 1)
这里第三个参数1表示只取1个字符,避免返回多余内容。
如果要按你原本的写法单独指定每一列,可以写成:
awk '{ print substr($1,length($1),1) substr($2,length($2),1) substr($3,length($3),1) substr($4,length($4),1) substr($5,length($5),1) substr($6,length($6),1) }'
2. 避免重复调用substr()的优化方案
可以通过遍历字段的方式,仅写一次substr()逻辑就完成所有列的字符提取,命令如下:
# 提取所有列的最后一个字符拼接 awk '{result=""; for(i=1;i<=NF;i++) result = result substr($i,length($i),1); print result}'
如果只需要提取前6列,把循环条件i<=NF改成i<=6即可。
命令说明:
NF是awk内置变量,代表当前行的总字段数,无需手动统计列数- 循环遍历每一列时复用同一套
substr()逻辑,不管有多少列都不用额外加代码 - 针对你给出的示例文本,执行全列提取后输出结果为
GMUCHOS
内容的提问来源于stack exchange,提问作者DOS HASAN
相关产品推荐
相关产品推荐

