最近「tsp:tab-separated values」で、タブ(tab, \t)を他の文字列にする必要が有った。簡単に思えたが、ほとんどの「os x」に搭載された「bash中のsed」ではそう簡単でない事が判った。今後の為に纏めて置く。
以下に、説明の為に作成したスクリプト;
其の動作結果を示す;
【結論】 sedのなかで「\t」を使いたくなったら「$mytab」に置き換えるべし。
.bash_profileでの該当部分は;
【参考資料】
この記事の履歴
以下に、説明の為に作成したスクリプト;
#!/bin/bash
#set -x
echo "=== $(basename $0): how to present tab in sed"
echo -e "== for $(bash --version | grep version)\n"
org="pqr stu" # rとsの間にはタブ
echo "■ 次の原稿には、rとsの間にはタブがある;"
echo " 0.---「${org}」"
echo
echo "■ タブをバレットに変えようとして、"
echo '■ 「sed -e "s/\t/•/"」にパイプしても、'
echo "■ タブは其の儘で「t」が消えるだけ;"
echo " 1.---「${org}」" | sed -e "s/\t/•/"
echo
echo "■ タブを表す変数を生成する"
echo '■ 方法1: t1="‹タブ押す›'
echo '■ 方法2: t2=$(echo -e "\t\c")'
echo '■■ 両者は等しい'
t1=" " #実際に「tab-key」を押した。
t2=$(echo -e "\t\c")
echo
echo '■ 「sed -e "s/${t1}/•/"」にパイプすると、タブは•に替わる'
echo " 2.---「${org}」" | sed -e "s/${t1}/•/"
echo
echo '■ 「sed -e "s/${t2}/•/"」にパイプしてもOK'
echo " 3.---「${org}」" | sed -e "s/${t2}/•/"
echo
echo ■ 参考資料に従って、1.の「'\'t」を「'"$'\''\t'\''"'」に書き換えて
echo '■ 「sed -e "s/"$''\t''"/•/"」にパイプしても、タブは•に替わる'
echo " 4.---「${org}」" | sed -e "s/"$'\t'"/•/"
echo
echo ■ 同じ参考資料に従って、.bash_profileで「export mytab='$'\''\t'\'」と定義したので
echo '■ 「sed -e "s/$mytab/•/"」とパイプしても、タブは•に替わる'
echo " 5.---「${org}」" | sed -e "s/$mytab/•/"
echo
echo 「上記、5.の方法が覚え易いし、安全だろう」
echo
echo "=== $(basename $0): end"
其の動作結果を示す;
u1@mmX75:~ $ test_tab
=== test_tab: how to present tab in sed
== for GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin11)
■ 次の原稿には、rとsの間にはタブがある;
0.---「pqr stu」
■ タブをバレットに変えようとして、
■ 「sed -e "s/\t/•/"」にパイプしても、
■ タブは其の儘で「t」が消えるだけ;
1.---「pqr s•u」
■ タブを表す変数を生成する
■ 方法1: t1="‹タブ押す›
■ 方法2: t2=$(echo -e "\t\c")
■■ 両者は等しい
■ 「sed -e "s/${t1}/•/"」にパイプすると、タブは•に替わる
2.---「pqr•stu」
■ 「sed -e "s/${t2}/•/"」にパイプしてもOK
3.---「pqr•stu」
■ 参考資料に従って、1.の「\t」を「"$'\t'"」に書き換えて
■ 「sed -e "s/"$\t"/•/"」にパイプしても、タブは•に替わる
4.---「pqr•stu」
■ 同じ参考資料に従って、.bash_profileで「export mytab=$'\t'」と定義したので
■ 「sed -e "s/$mytab/•/"」とパイプしても、タブは•に替わる
5.---「pqr•stu」
「↑の5.の方法が覚え易いし、安全だろう」
=== test_tab: end
u1@mmX75:~ $
【結論】 sedのなかで「\t」を使いたくなったら「$mytab」に置き換えるべし。
.bash_profileでの該当部分は;
export LANG=ja_JP.UTF-8
export mytab=$'\t'
【参考資料】
- http://mattintosh.hatenablog.com/entry/2013/01/16/143323
- bash Pocket Reference, O'REILLY, ISBN: 978-1-449-38788-4, p11, $' '
この記事の履歴
- 開始 2013-05-19(日) 21:22:30
- 修正 2013-05-20(月) 10:57:34 .bash_profile
0 件のコメント:
コメントを投稿