プログラミングのためのTIPS

よく忘れるチョイネタは、しっかりとメモしておこう。

Fortran

unformattedなsequentialの入出力

  • 衝撃の事実! unformattedでsequential なアクセスの場合、データのカタマリごとにアクセスが行われる。
    要は、カタマリの間には8バイトのスペース(?)が入って、一回のアクセスがカタマリの大きさに対してどうであろうと、次のアクセスは次のカタマリに行っちゃう、ということだ。
    たぶん、いまさら気づいているのが遅いんだろうけど、今までDirect Accessが多かったからしかたないのだ。

formattedなsequentialの入出力

  • いまさらでいうと、formattedの自由書式(*)のとき、入力は,(カンマ)も区切り文字として認識するみたいだ。知らなかった(恥)。

iargc()

引数の数。

if (iargc().ne.3) then
 write(6,*) 'Usage: xxxxxx'
 stop
end

とか入れておくと、すっかり忘れたプログラムが何をするものか思い出されやすい。

Shell (sh,csh,tcsh)

awk

書式(printf)

awk '{SUM=SUM+$1}END{printf("%f\n",SUM/NR)}' list
echo 1 | awk '{printf("%2.2i\n",$1+1)}'

正規表現

  • ファイル名:FILENAME
  • 行:NR
  • フィールド数:NF
  • フィールド全部:$0

sed

置換

sed -e s/"\/"/" "/g sample.txt  --> 全ての/ (スラッシュ)を (空白)に置換。