如何使用 `cut` 删除最后一个 CR 字符
How to remove the last CR char with `cut`
我想使用 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
\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
我想使用 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
\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