シェルスクリプトでcutの代わりに配列を使ってみたはなし

久々にシェルスクリプトを書いた。

こんなのを書いたら結構遅かった。
区切り文字がもともとスペースだったので配列にしてみたら大分早くなった。
before
1
2
3
4
5
6
7
8
9
10
#!/bin/sh
MIN=$1
 
while read i; do
  # 入力文字中のスペース区切りのn番目の数値を判定してフィルタリング
  VAL=`echo $i | cut -d " " -f 11`
  if [ $VAL -ge $MIN ]; then
    echo $i
  fi
done

after
1
2
3
4
5
6
7
8
9
#!/bin/sh
MIN=$1
 
while read i; do
  items=($i)
  if [ ${items[10]} -ge $MIN ]; then
    echo $i
  fi
done

そっかー、配列かー
シェルスクリプトの配列って扱いづらくて苦手の感じある。
分岐をなくせばもっと早くなりそうだけど、、、それはちょっと難しそう。

コメント

このブログの人気の投稿

PostgreSQLで多次元配列を1次元配列に展開したい

inotify でファイル監視しようず!

ジャックパーセルのかかとの内側を直した