2016-04-14 7 views
1

cutを使って文字列の一部を取得したいと考えています。ここでは、ダミーの例を示します。最後のCR文字を `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 

答えて

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 
関連する問題