鈍足ランナーのIT日記

走るのが好きな5流のITエンジニアのブログ。

趣味の範囲は広いけど、どれも中途半端なクソブロガー楽しめるWebアプリを作ってあっと言わせたい。サーバーサイドPerl(Mojolicious)、クライアントサイドVue.js。Arduinoにも触手を伸ばす予定。

Bashでタブ区切りのデータを分解して扱いたい

まずは、カンマ区切り

#!/bin/bash
TEXT='A,,B'
IFS=','
set -- $TEXT
echo "1:$1"
echo "2:$2"
echo "3:$3"

実行結果

1:A
2:
3:B

これをタブでやると・・・

#!/bin/bash
TEXT='A         B'
IFS=$'\t\n'
set -- $TEXT
echo "1:$1"
echo "2:$2"
echo "3:$3"

実行結果

1:A
2:B
3:

空白が入らないので辛い

以下をみて、タブをカンマに置き換えてから処理

http://stackoverflow.com/questions/4622355/read-in-bash-on-tab-delimited-file-without-empty-fields-collapsing

#!/bin/bash
TEXT='A         B'
TEXT=${TEXT//$'\t'/,}
IFS=','
set -- $TEXT
echo "1:$1"
echo "2:$2"
echo "3:$3"

実行結果

1:A
2:
3:B

でも、タブを区切り文字にするくらいだから、 データに,がある場合にはこれではNGですね