在awk和echo之后删除多余的空间

输入文件看起来像

ab 1 2
xy 3 5

当我在循环中使用以下行时

NAME=`echo $line | awk '{print $1}'`
echo $NAME "-"

输出是

ab -
xy -

我不知道单词和“-”之间的“空格”是由awk还是echo引起的。我要删除它。我想确保$ NAME是“ ab”或“ xy”,而不是“ ab”或“ xy”。

我怎样才能做到这一点?

评论
  • 噬魂
    噬魂 回复

    这是回声:

    $ NAME="foo"
    $ echo $NAME $NAME
    foo foo
    $ echo $NAME$NAME
    foofoo
    

    没有空间:

    $ echo ${NAME}BAR
    fooBAR
    

  • kaut
    kaut 回复

    echo outputs its arguments separated by spaces. You can modify the echo statement to:

    echo "${NAME}-"
    

    From bash(1):

     echo [-neE] [arg ...]
              Output the args, separated by spaces, followed by a newline. [...]
    

    You could use printf too:

    printf "%s-\n" "${NAME}"