配列ファイルがあり、要素に対して数学的操作を実行する必要があります。私がしなければならないのは、要素自体を掛けて印刷することです。
入力は次のとおりです。
1: 6.1703
44 -0.27135
46 0.30270
44 0.52648
2: 6.1932
44 0.51448
46 0.14674
44 0.27957
46 -0.31834
3: 6.5664
45 -0.11892
45 0.66483
46 0.12505
各配列の最初の行はヘッダーです。 2番目の列の要素に対して数学演算を実行する必要があります。
出力は次のようになります。
1: 6.1703
44 0.07363
46 0.09162
44 0.27718
2: 6.1932
44 0.26468
46 0.02153
44 0.07815
46 0.10134
3: 6.5664
45 0.0141
45 0.44199
46 0.01563
どんなアイデアや提案がありますか?
答え1
私はこれを使用しますawk
:
awk '$1 ~ /^[0-9]+$/ {$2*=$2}; 1'
最初の列が数値の場合は、2番目の列に数字を掛けます。その後、行全体を印刷します。
答え2
while read line; do # for all lines in the file
i=0 # initialise loop counter
for param in $line; do # for all words on the line
if [[ $i -ne 0 ]]; then # if its not the first one
echo $param | awk '{printf "%4.3f\n",$1*$1}' # print the result of squaring
fi # (you could output to a file with >>)
((i++)) # increment loop counter
done
done < yourfilename # stream in your file