awk を使って zero と pole の値の指数表示を小数表示に変える C shell script:zp_fmt.csh 使い方は % ./zp_fmt.csh と打ち込んでみればわかります。 ---------------------------- zp_fmt.csh:ここから ---------------------------- #! /bin/csh -f # C shell script for converting format of zero and pole files using awk # (made by Y. Kakehi on 03/09/19) # check argument if ($#argv != 2) then echo put input and output file names! echo usage: zp_fmt.csh file_in file_out exit 1 endif set fin = $argv[1] set fout = $argv[2] awk '\ /CONSTANT/ {printf("%s %.6e\n",$1,$2)} \ /ZEROS/ {printf("%s %d\n",$1,$2)} \ /POLES/ {printf("%s %d\n",$1,$2)} \ {if($1 != "CONSTANT" && $1 != "ZEROS" && $1 != "POLES") \ printf("%.5f %.5f\n",$1,$2)}\ ' $fin >! $fout echo input file: $fin echo output file: $fout # 〈解説〉 # # /CONSTANT/ {printf("%s %.6e\n",$1,$2)} # # 文字列 "CONSTANT" を含む行は、第1フィールドを文字列として、第2フィールドを # 小数点以下6桁の指数表示で出力する。改行も行う。 # # /ZEROS/ {printf("%s %d\n",$1,$2)} # # 文字列 "ZEROS" を含む行は、第1フィールドを文字列として、第2フィールドを整数 # (10進数)表示で出力する。改行も行う。 # # /POLES/ {printf("%s %d\n",$1,$2)} # # 文字列 "POLES" を含む行は、第1フィールドを文字列として、第2フィールドを整数 # (10進数)表示で出力する。改行も行う。 # # {if($1 != "CONSTANT" && $1 != "ZEROS" && $1 != "POLES") # printf("%.5f %.5f\n",$1,$2)} # # 第1フィールドが文字列 "CONSTANT" でも文字列 "ZEROS" でも文字列 "POLES" でも # ない行の場合、第1、2フィールドを小数点以下5桁の小数表示で出力する。改行も行 # う。 # 注:小数点以下6桁にすると transfer 実行時にエラーが出た。この現象がどの程度 # 普遍的なのか不明。 ---------------------------- zp_fmt.csh:ここまで ----------------------------