csh/tcshは人気がないらしく,tips的なものを見つけるのが難しいので自分でメモを残していくことにしました.
主に自分用なので質についてはあしからず.
配列のソート
tcshで変数に格納した配列をソートする.
以下が変数xの配列をソートして変数yに代入して表示するスクリプト.
set x = (10 24 100 103 21 34 101)
echo $x
set y = `echo $x | tr ' ' '\n' | sort -n`
echo $y
要はtr
コマンドでスペースを改行に変換してからsort
に渡している.
bashなどではfor文で配列の要素を1つずつecho
してそれをsort
に渡せばいいが,
tcshはfor文をワンライナーで書きづらいので,こんな感じにした.
#文字列の配列を数字順にソート
「文字列_数字」など,特定のフォーマットにそっていれば,
数字の直前にある文字や記号を区切り子に指定してソートすればいい.
set x = (a_10 a_24 a_103 a_21 a_34 a_310 a_250)
echo $x
set y = `echo $x | tr ' ' '\n' | sort -k 2 -t "_" -n`
echo $y
#おまけ:なぜtcshか
set
と=
と変数の間にスペースをすきなだけ入れられるので,
スクリプト内で実験条件などを変数に格納するとき=
の位置を揃えられてキレイ.