tr -d 不适用于回车

tr -d 不适用于回车

我想从变量中删除 \n 我找到了很多答案,其中说“使用 tr -d”但tr -d对我不起作用

echo "$test" | od -c
0000000   4   4   2   5   2  \n
0000006

然后我用tr -d

test2=$(echo $test | tr -d '\n')

但没有任何改变

echo "$test2" | od -c
0000000   4   4   2   5   2  \n
0000006

答案1

使用tr -d '\n', 按预期删除\n(即换行符)。但你正在用echo命令验证这一点。Echo命令本身会将换行符放在输入字符串的末尾,因此您无法看到预期的输出。

使用下面的命令集检查变量。

test2=$(echo "$test" | tr -d '\n')
printf "%s" $test2 | od -c
echo -n $test2 | od -c

脚本输出:

0000000   h   e   l   l   o
0000005
0000000   h   e   l   l   o
0000005

注意: echo -n :来自 echo 手册页: -n 不输出尾随换行符 printf :不在末尾附加 \n

答案2

echo\n默认是附加的。用于-n省略

[6]root@lab7:~> echo 'lol' |od -c
0000000   l   o   l  \n
0000004
[6]root@lab7:~> echo -n 'lol' |od -c
0000000   l   o   l
0000003

相关内容