いわて駐在研究日誌

OpenCAE、電子工作、R/C等、徒然なるままに

久しぶりのスクリプト書き

VTKファイル(legacy)から、特定の行を抜き出して処理する。ファイルへはリダイレクトを使う。

#!/sbin/bash

#temperature header line (VTK)
OFFSET=954410

#target cell IDs in (FRT, CNT, BCK, CRG) sections
case $1 in
FRT) TARGET=( 20923 14013 283432 98090 37973 89543 ) ;;
CNT) TARGET=( 111719 129157 288623 113127 30554 102115 181349 169444 274788 ) ;;
BCK) TARGET=( 113894 280983 283125 102904 293209 221404 ) ;;
CRG) TARGET=( 87463 14145 54190 46885 2158 116164 26627 21235 276500 ) ;;
*) echo "Please specfy one of FRT CNT BCK and CRG" ;;
esac

EXTRACT=( )
timestep=0

echo -n "CellIDs" ${TARGET[@]} ; echo

for FILE in `ls elm*.vtk | sort`
do
i=0
while [ $i -le `expr ${#TARGET[@]} - 1` ]
do
#echo $FILE $i ${TARGET[$i]}

N=`expr $OFFSET + ${TARGET[$i]} + 1`
EXTRACT[$i]=`head --lines=$N $FILE | tail -1` #sed -n "$Np" "$FILE"

#echo $i ${EXTRACT[$i]}

i=`expr $i + 1`
done
timestep=`expr $timestep + 1`
echo -n $timestep ${EXTRACT[@]}
echo
done