2

次のファイルがあります。

T$57 abc 文字列 (50.00,110.00) T$97 xyz 文字列 (30.00,-1100.00)

(50.00,110.00) 、 (30.00,-1100.00) を新しいファイルに入れ、最後に x 座標の最大数を変数に保存し、y 座標の最小数を保存する必要があります。別の変数で。

ありがとう

4

2 に答える 2

1

awk以下に示すように使用します。座標はと呼ばれる別のファイルに保存されfile2、maxとminを含む変数はそれぞれmaxXminYです。

$ cat file
T$57  abc string  (50.00,110.00)
T$97  xyz string  (30.00,-1100.00)

$ read maxX minY < <(awk -F"[ (,)]+" 'NR==1 { maxX=$4;minY=$5 } {if($4>maxX){maxX=$4} if($5<miny){miny=$5}print "("$4","$5")" > "file2"}END{print maxX" "miny}' file)

$ echo $maxX
50.00

$ echo $minY
-1100.00

$ cat file2
(50.00,110.00)
(30.00,-1100.00)
于 2012-12-13T16:03:44.833 に答える
0

ここに小さなシェルスクリプトがあります:

#!/bin/bash

maxx=0
miny=0
#For everithing between brackets in you file do
for i in `grep -oE '\(([^\(\)]*)\)' file` ; do

 echo $i >> newFile

 #Getting the differnts values
 j=`echo $i | tr -d '[\(][\)]'`
 x=`echo $j | cut -d, -f1`
 y=`echo $j | cut -d, -f2`

 #Putting the max in maxx
 if [ $maxx \< $x ] ; then
  maxx=$x
 fi

 #Putting the min in miny
 if [ $miny \> $y ] ; then
  miny=$y
 fi

done

echo $maxx
echo $miny
于 2012-12-13T16:28:49.957 に答える