晴耕雨読

working in the fields on fine days and reading books on rainy days

Bashで文字列の右からN文字分を削除する

Bashで文字列の右からN文字分を削除する方法について説明します。 まず、cutコマンドは左からN文字分を削除することができますが、右からを指定することができません。 なので、revコマンドで左右反転させてからcutして再度revすると、右からN文字分を削除できるようになります。

INDENT_LEVEL=2
echo "TEST_TEXT" | rev | cut -c $((INDENT_LEVEL+1))- | rev
# => TEST_TE

Git Bash のような rev コマンドが存在しない一部の環境では、代わりに awk を使うことで上と同じことを実現できます。

echo "TEST_TEXT" | awk -v indentlevel=$INDENT_LEVEL '{print substr($0, 0, length($0)-indentlevel)}'
# => TEST_TE

以上です。

参考文献