ななつめ

c2a0スペースを普通の半角スペースに置き換える(Ubuntu / TeX / shell)

$ tree ./

とすると、以下のようにディレクトリ構造が出力される。

./docoTsubu
 ├── WEB-INF
 │   ├── jsp
 │   │   ├── loginResult.jsp
 │   │   ├── logout.jsp
 │   │   └── main.jsp
 │   └── llb
 │       ├── jstl-api-1.2.jar
 │       └── jstl-impl-1.2.jar
 ├── build.xml
 ├── common.jsp
 ├── docoTsubu.xml
 ├── footer.jsp
 ├── index.jsp
 └── src
     ├── model
     │   ├── LoginLogic.java
     │   ├── Mutter.java
     │   ├── PostMutterLogic.java
     │   └── User.java
     └── servlet
         ├── Login.java
         ├── Logout.java
         └── Main.java

これを Tex で出力すると、このようになる。

この ^^c2^^a0 なるものは、何か?

UTF-8での半角空白文字列ということで特殊文字だそうである。

C2A0文字コードはUTF-8の半角スペース

少しぐらいなら手作業で ^^c2^^a0 を半角スペースに置き換えていけばいいのだが、 今回のように量が多くなると、自動化したくなる。

さて、その変換プログラムを何で作るか。

C, OCaml, などなどが考えられるが、まあシェルでやってるので、シェルスクリプトで 作成してみる。

いくつかのサイトを参考にしてできたスクリプトが以下である。

c2a0space.sh

#!/bin/bash

PRE_IFS=$IFS
IFS=$'\n'

if [ -p /dev/stdin ] ; then
    echo "stdin"
    cat - | while read line
    do
        new=`echo "$line" | sed -e "s/\xc2\xa0/ /g"`
        echo "$new"
    done
else
    echo "nothing stdin"
fi

IFS=$PRE_IFS

シェルスクリプトにあまり詳しくないので、無駄な記述があるかもしれない

参考サイト