Unix 在awk中打印是在打印时删除空格

Unix 在awk中打印是在打印时删除空格,unix,awk,wc,Unix,Awk,Wc,我试图用awk打印值,但它通过删除字段之间的空格来修改结果。 我不知道如何维护字段之间的空格 echo "First Names City Names ES"|awk '{$1=$2=$NF="";print $0}'|wc -c 上面的语句在打印时删除了“城市”和“名称”之间的空格,因此wc-c的值受到影响 请建议如何维护这些空间。 我的目标是验证“城市名称”值的长度 我对wc-c输出还有一个疑问,它总是给实际值加1+,也就是说,如果长度是11,它就给12 请建议

我试图用awk打印值,但它通过删除字段之间的空格来修改结果。 我不知道如何维护字段之间的空格

echo "First Names       City     Names     ES"|awk '{$1=$2=$NF="";print $0}'|wc -c
上面的语句在打印时删除了“城市”和“名称”之间的空格,因此wc-c的值受到影响

请建议如何维护这些空间。 我的目标是验证“城市名称”值的长度

我对wc-c输出还有一个疑问,它总是给实际值加1+,也就是说,如果长度是11,它就给12

请建议如何维护这些空间

使用字段分隔符:

$ echo "First Names       City     Names     ES"|awk -F'[ ]' '{$1=$2=$NF="";print $0}'
        City     Names     
我还有一个关于wc-c输出的疑问,它总是给1+到 实际价值

那是因为新线。您可以说
echo-n
,而不是
echo
,以便禁用尾随换行符

$ echo | wc -c
1
$ echo -n | wc -c
0