Twitter|Facebookで今すぐ使える中国語・韓国語表現600 ([テキスト])
- 作者: 語研編集部
- 出版社/メーカー: 語研
- 発売日: 2013/05/28
- メディア: 単行本
- この商品を含むブログを見る
のじゃロリおじさん以降、Vtuberを追っかけているのですが
このVtuber、お隣の中国や韓国でも結構人気で動画のコメントに中国語やハングルがでてくる事があります。
Duolingoの2番目の言語として韓国語選んだ事もあって、
コメント理解と語学学習を兼ねる目的で購入。
Twitter|Facebookで今すぐ使える中国語・韓国語表現600 ([テキスト])
のじゃロリおじさん以降、Vtuberを追っかけているのですが
このVtuber、お隣の中国や韓国でも結構人気で動画のコメントに中国語やハングルがでてくる事があります。
Duolingoの2番目の言語として韓国語選んだ事もあって、
コメント理解と語学学習を兼ねる目的で購入。
……printfやechoで、行頭のスペースが消されて見えなくなるというあれが。
スクリプトの方はちゃんと整形していても、出力でお節介されたらたまりません。
shunit2でテストをやろうとした時、先頭にスペースがあって然るべき文字列として渡しても、
スペースを削除して勝手に整形されてしまうので用意したテスト結果と一致しないという事態が発生します。
この場合、テスト結果と実行体を同じ表示形式で読むなりの工夫が必要になってきます。
$ echo -n " 123" 123 $ echo -n " 123" | hexdump 0000000 20 31 32 33 0000004 $ printf " 123" | hexdump 0000000 20 31 32 33 0000004 $ echo `echo -n " 123"` | hexdump 0000000 31 32 33 0a 0000004 $ echo -n `echo -n " 123"` | hexdump 0000000 31 32 33 0000003 $ printf `echo -n " 123"` | hexdump 0000000 31 32 33 0000003 $ hexdump <<< `echo -n " 123"` 0000000 31 32 33 0a 0000004 $ hexdump <<< "`echo -n " 123"`" 0000000 20 31 32 33 0a 0000005
ビッグエンディアンで2バイト、1バイト、1バイトと格納されている文字列が来ていたとします。
こいつをリトルエンディアンで置き換えるには先頭だけ入れ替えてあげればいいですね。
$ echo AD7399AF | sed -e "s/\([1-9A-F]\{2\}\)\([1-9A-F]\{2\}\)\(.*\)/\\2\\1\\3/g" 73AD99AF
ビッグエンディアンで2バイト毎が3個……とかいう構成なら、sedで1バイト(=2文字)に切り分け、
awkのprintf フォーマットをつかってこう書いた方が楽かも……
$ echo AD7399AF51CD | sed 's/.\{2\}/& /g' | awk -F " " '{printf $2$1 $4$3 $6$5}'
たとえば"0F"といった感じの値で出力されてくる場合、
文字列の頭に"0x"とつけて、printfで出力してやれば10進数になります。
$ awk 'BEGIN { val="0x""0F"; printf "%d",val }' 15
演算してからの格納もOK
$ awk 'BEGIN { val="0x""0F"; val=val+ "0x01"; printf "%d",val }' 16 $ awk 'BEGIN { val="0x""0F"; val=val+ 1; printf "%d",val }' 16
パイプでawkを使ったとき、その変数は共通で持ち越せます。
……今まで使ってて気づかんかったんかという話ですが……
seqで10行作って、BEGINでcntを定義、毎回2足していくという単純なモンの場合……
$ seq 1 10 | awk "BEGIN {cnt = 0}; {print cnt; cnt = cnt + 2;}" 0 2 4 6 8 10 12 14 16 18