- ベストアンサー
awkでバイト数を方法
文字列$2を300文字まで切り取る方法は substr($2,1,300)ですが、 全角半角が混在している文字列を 先頭から300バイト取得する方法が分かりません。 お手数をおかけしますが、 ご教授願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
noname#194317
回答No.2
あっさりシングルバイト版のawk を使うか、全角文字を考慮しないよう指定できる オプションを持つawk(参考URL)を使うのが一番簡単じゃないですか? ただひとつ心配なのは、300バイト目に全角文字が来た場合です。この時、問答無用で 取り出すと、300バイト目は全角文字が分断されてしまったゴミとなりますが、 これは問題ありませんか? 問題なければ、単純にsubstrで300バイト分取り出せば済みます。それだと困る…と いうことなら、効率は悪いですがループを組んで一文字ずつ取り出し、 hankaku=sub(/[ -~]/,"1",$2から一文字取り出したもの) とかやって今取り出した文字を置換してみて、変数hankakuがゼロじゃなければその 文字は半角です。こうやって一文字ずつ取り出しては全角かどうか調べ、長さを調整して 連結していくことになります。
その他の回答 (1)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
回答No.1
ちょっと情報が古いかもしれませんが、 jgawkというのがあって gawkを日本語対応させたものですが、 それには、 jsubstr($2,1,300) で全角半角が混在する文字列から300文字切り出せます。 (300文字ではなく、300バイトの場合は、そのままでいいと思います)