Bashで文字列の切り出しをするには

Bashで文字列の切り出しをする場合は以下のように記述します。

${変数名:オフセット:切り出す文字数}

変数fooから先頭2文字を切り出す
echo ${foo:0:2}
sub01.png

変数fooから4文字目以降をすべて切り出す
echo ${foo:3}
sub02.png

文字列を末尾から切り出す場合はオフセットにチルダ (~)を足す

${変数名:~オフセット}

最後の1文字を切り出す
echo ${foo:~0}
rev1.png

末尾から2文字を切り出す
echo ${foo:~1}
rev2.png

末尾から3文字を切り出す
echo ${foo:~2}
rev3.png

おまけ

変数encodedから2文字ずつ切り出して、0x50とXOR演算して平文に復号する

encoded="38353c3c3f70273f223c34"

cnt=0; len=$(echo -n $encoded | wc -c); while [ $cnt -lt $len ]; do echo $(( 0x${encoded:cnt:2} ^ 0x50 )) | python -c "import sys; sys.stdout.write(chr(int(sys.stdin.read())))"; cnt=$(expr $cnt + 2); done

sub03.png

以上。

Leave a Reply

Your email address will not be published. Required fields are marked *