1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

csh/tcsh で配列のソート

Last updated at Posted at 2018-10-25

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=と変数の間にスペースをすきなだけ入れられるので,
スクリプト内で実験条件などを変数に格納するとき=の位置を揃えられてキレイ.

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?