[bash] edycja pliku w petli


(Uzi123) #1

Mam plik:

@Ne1 0.0000000000000 0.0000000000000 3.5000000000000 *|Ne1 0.0000000000000 0.0000000000000 -3.5000000000000 *|Ne1 0.0000000000000 0.0000000000000 -3.5000000000000 *|Ne1 0.0000000000000 0.0000000000000 -3.5000000000000 *|

@Ne1 0.0000000000000 1.0000000000000 3.5000000000000 *|Ne1 0.0000000000000 0.0000000000000 -3.5000000000000 *|Ne1 0.0000000000000 0.0000000000000 -3.5000000000000 *|Ne1 0.0000000000000 0.0000000000000 -3.5000000000000 *|

potrzebuje w pętli przejść po wszystkich liniach(kazda linia zaczyna się od @) i w kazdej "iteracji" przejść ponownie po pętli, ale teraz względem każdego fragmentu zakonczonego |. Wygenerowałem coś takiego (test.sk):

#!/bin/bash


plik=$1.geo

echo $plik

list=`cat $plik | cut -d "@" -f 2`

for line in $list

do

par=`echo $line | cut -d "|" -f 2`

 for w in $par

 do

 echo "$w abcde"

 done

done

wywoluje to w taki oto sposób:

./test.sk ne2

niestety nie dziala to porawnie.

Po pierwsze nie wiem dlaczego w zmiennej $list siedzą nazwy pozostałych plików z katalogu oraz zawartość pliku ne2.geo

Po drugie nie wiem jak zmusić bash do tego aby nie rozdzielał zawartości wyników operacji w miejscu spacji, tylko w miejscach @ i |