我想使用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
答案 0 :(得分:4)
\n
由echo
添加。相反,请使用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