如何使用`cut`删除最后一个CR char

时间:2016-04-14 11:37:03

标签: linux cut carriage-return

我想使用cut获取字符串的一部分。这是一个虚拟的例子:

$ echo "foobar" | cut -c1-3 | hexdump -C
00000000  66 6f 6f 0a                                       |foo.|
00000004

注意最后添加了\n个字符。

在这种情况下,没有必要使用cut删除最后一个字符,如下所示:

echo "foobar" | cut -c1-3 | rev | cut -c 1- | rev

我仍然会得到这个额外的和不需要的字符,我想避免使用额外的命令,如:

shasum file | cut -c1-16 | perl -pe chomp

1 个答案:

答案 0 :(得分:4)

\necho添加。相反,请使用printf

$ echo "foobar" | od -c
0000000   f   o   o   b   a   r  \n
0000007
$ printf "foobar" | od -c
0000000   f   o   o   b   a   r
0000006

有趣的是,cut本身也增加了新的一行:

$ printf "foobar" | cut -b1-3 | od -c
0000000   f   o   o  \n
0000004

所以解决方案似乎使用printf来输出:

$ printf "%s" $(cut -b1-3  <<< "foobar") | od -c
0000000   f   o   o
0000003