如何用awk的if语句判断管道输入字符数,实现和wc -m一致的效果
问题原因分析
- 你原代码的核心错误是无法在awk的条件判断中直接执行shell命令
wc -m:awk会把wc、-m识别为未定义的自定义变量,默认值为空/0,你写的if ( wc -m $0 -eq 2 )判断逻辑永远为真,所以所有输入都会走补0的分支。 - awk内置了
length()函数,可以直接获取字符串的字符长度,返回值和wc -m的统计结果完全一致(因为echo输出自带的换行符会被算入$0的总长度,和wc -m的统计逻辑匹配)。
修正后的命令
echo "5" | awk '{ if (length($0) == 2) print "0"$1 ; else print $1 }'
- 输入
5时length($0)返回2,输出05,符合预期 - 输入
55时length($0)返回3,直接输出55,符合预期
内容的提问来源于stack exchange,提问作者Ni-Ar
相关产品推荐
相关产品推荐

