2016-04-14 69 views
1

我想使用cut來得到字符串的一部分。這裏有一個虛擬的例子:如何使用`cut`刪除最後一個CR字符

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

注意到\n char在最後添加。

在這種情況下,沒有一點用cut刪除最後一個字符如下:

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

我仍然會得到這額外和不必要的字符,我想避免使用額外的命令,例如:

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

回答

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 
相關問題