Skocz do zawartości

Wyciaganie Pliku Z Tekstu I Bledy


climbwave

Rekomendowane odpowiedzi

Czesc,

 

Mam skrypt ktorym wyciagam odpowiedni tekst z pliku.

Jak dziala:

Podczas wpisywania odpowieniej nazwy pliku skrypt wyciaga text,a nasteprznie przenosi utworzone pliki do odpowiedniego foldera.

 

Chcialbym aby skrypt rowniez informowal o tym ,ze pliki zostaly poprawnie utworzone oraz przeniesione.Oczywiscie w przypadku podania zlej nazwy pliku skrypt ma poinformowac o tym , ze dany plik nie istnieje.

 

Czy ktos z was moze mi powiedziec co jest tutaj zle? Dopisalem warunek if/else ale cos nie tak :[

 

Pozdrawiam,

c

 

 

#!/bin/bash

##############################################
#Script is taking H,C,E,V record from P1 file
#
#############################################

#Direction of P1 file
P1_DIR='/home/sprint/Desktop/jacek/test/'
CEV_DIR='/home/sprint/Desktop/jacek/test/cev/'
ERR1='File does not exist - try again with correct file number'

#Some description how it works
echo ""
echo "Hello!"
echo ""
echo "Script will create C, E, V records from P1 file"
echo ""
echo "Type file name without prefix & extension - example 123456023A"
echo ""

read filename

cd $P1_DIR

#It's taking H,C,E,V records from P1 file
if [ ! -f $P1_DIR"NSR$filname.p190" ]; then

#It's taking ...
grep ^H NSR$filename.p190 > hdr 
grep ^C NSR$filename.p190 > Crec 
grep ^E NSR$filename.p190 > Erec 
grep ^V NSR$filename.p190 > Vrec 

#it's creating E,V,C records and save as we want 
cat hdr Erec > "NSR${filename}_Erec.p190" 
cat hdr Vrec > "NSR${filename}_Vrec.p190" 
cat hdr Crec > "NSR${filename}_Crec.p190" 

#cd $P1_DIR
mv $P1_DIR"NSR${filename}_Erec.p190" $CEV_DIR 
mv $P1_DIR"NSR${filename}_Vrec.p190" $CEV_DIR 
mv $P1_DIR"NSR${filename}_Crec.p190" $CEV_DIR 

echo ""
echo "...done"

else
echo "$ERR1"
exit 1
fi

 

-----------------

Edycja:

Cos nie wychodzi.

Po podaniu odpowieniej nazwy pliku wszystko jest ok czyli wyciagane sa dane z jednego pliku i przenoszone do innego foldera.

Natomiast jak podam nazwe pliku ktorego nie ma to tworzy mi sie pusty plik oraz pokazuje sie "...done".

 

To jak na razie tyle:[

Edytowane przez WalDo
edycja znaczników
Odnośnik do komentarza
Udostępnij na innych stronach

WalDo rowniez gratuluje nagrody - szczerze .

 

 #!/bin/bash 

##############################################
#Script is taking C,E,V record from P1 file
#
#############################################

#Direction of P1 file
P1_DIR='/home/sprint/Desktop/jacek/test/'
CEV_DIR='/home/sprint/Desktop/jacek/test/cev/'
ERR1="File does not exist - try again with correct file number"

#Some description how it works
echo ""
echo "Hello!"
echo ""
echo "Script will create C, E, V records from P1 file"
echo ""
echo "Type file name without prefix & extension - example 123456023A"
echo ""

read filename

cd $P1_DIR

#It's taking H,C,E,V records from P1 file
if [ -f NSR$filname.p190 ]; then

#It's taking ...
grep ^H NSR$filename.p190 > hdr 
grep ^C NSR$filename.p190 > Crec 
grep ^E NSR$filename.p190 > Erec 
grep ^V NSR$filename.p190 > Vrec 

#it's creating E,V,C records and save as we want 
cat hdr Erec > "NSR${filename}_Erec.p190" 
cat hdr Vrec > "NSR${filename}_Vrec.p190" 
cat hdr Crec > "NSR${filename}_Crec.p190" 

#cd $P1_DIR
mv $P1_DIR"NSR${filename}_Erec.p190" $CEV_DIR 
mv $P1_DIR"NSR${filename}_Vrec.p190" $CEV_DIR 
mv $P1_DIR"NSR${filename}_Crec.p190" $CEV_DIR 

echo ""


else
echo "$ERR1"
exit 1
fi

 

Mam cos takiego i dalej nic. Nie wiem co moze byc zle. Jak na raziestoje w miejscu.

 

Pozdrawiam,

c :)

Edytowane przez climbwave
edycja znaczników
Odnośnik do komentarza
Udostępnij na innych stronach

Jakoś tak wielką czerwoną ironią powiało <_<

 

grep ^H NSR$filename.p190 > hdr 
grep ^C NSR$filename.p190 > Crec 
grep ^E NSR$filename.p190 > Erec 
grep ^V NSR$filename.p190 > Vrec

Jak rozumiem, to ma rozdzielać pliki z CSV?

Jakoś nie bardzo wiem co oznaczają te ^C ^E itp. Ja bym to spróbowaał jakimś splitem (ale tego w bashu chyba nie ma), albo sedem (ale na nim się raczej nie znam :P).

 

W perlu by było (mniej więcej) tak (piszę z pamięci, może brakować argumentów):

$txt = split($line, ',');
echo $txt[1];
echo $txt[2];

 

i tak dalej...

Odnośnik do komentarza
Udostępnij na innych stronach

Nie, nie ironia.Dlaczego?

 

Uwazam, ze dobrze jest ,iz sa wsrod nas osoby ktore chca i potrafia dzielic sie swoja wiedza. Nie jestem informatykiem ani programista. W pracy wszystko jest oparte na RH i przez to jestem zmuszony do uzywania terminala. Gdyby nie fora internetowe to nie byloby latwo.

Poza tym dlaczego nie cieszyc sie z sukcesu drugiej osoby ktora zapewne ciezko na ten sukces pracuje i zasluguje na nagrode.

 

Natomiast jezeli zabrzmialo ironicznie to edytuje wczesniejszy post i poprawie wypowiedzi.

 

Sam kod w postaci ponizszej pracuje bez problemu.

 

 #!/bin/bash 

##############################################
#Script is taking C,E,V record from P1 file
#
#############################################

#Direction of P1 file
P1_DIR='/home/sprint/Desktop/jacek/test/'
CEV_DIR='/home/sprint/Desktop/jacek/test/cev/'
ERR1="File does not exist - try again with correct file number"

#Some description how it works
echo ""
echo "Hello!"
echo ""
echo "Script will create C, E, V records from P1 file"
echo ""
echo "Type file name without prefix & extension - example 123456023A"
echo ""

read filename

cd $P1_DIR

#It's taking ...
grep ^H NSR$filename.p190 > hdr 
grep ^C NSR$filename.p190 > Crec 
grep ^E NSR$filename.p190 > Erec 
grep ^V NSR$filename.p190 > Vrec 

#it's creating E,V,C records and save as we want 
cat hdr Erec > "NSR${filename}_Erec.p190" 
cat hdr Vrec > "NSR${filename}_Vrec.p190" 
cat hdr Crec > "NSR${filename}_Crec.p190" 

#cd $P1_DIR
mv $P1_DIR"NSR${filename}_Erec.p190" $CEV_DIR 
mv $P1_DIR"NSR${filename}_Vrec.p190" $CEV_DIR 
mv $P1_DIR"NSR${filename}_Crec.p190" $CEV_DIR 

echo ""

 

^C - pobiera cala linie textu zaczynajaca sie na C --> przykladowa linia textu Csaidufaisdufnoiufeowufnoufnufniew

 

Nie widze bledow w skrypcie ktory napisalem i sam go nie znajde.

 

c

 

Jeszcze raz dzieki za pomoc

 

P.S.

Moja wiedza z RH to zaledwie RH033 ;)

Odnośnik do komentarza
Udostępnij na innych stronach

if [ -f NSR$filename.p190 ]; then

Pisałem przecież. Zjadłeś literę w nazwie zmiennej w warunku, to i nie działa.

Cała reszta skryptu jest OK. Przynajmniej u mnie było OK jak prosty teścik zrobiłem.

 

PS. też jak widzę takie "woły" i to jeszcze na czerwono to mi ironią wieje :\ Ale skoro mówisz, że "nie", to muszę wierzyć ;)

 

[EDIT]

Korzystaj z odpowiednich znaczników i przy listingach dłuższych niż 15 linii dawaj codebox zamiast code - nie trzeba potem tyle przewijać.

Odnośnik do komentarza
Udostępnij na innych stronach

Dzieki za pomoc. No tak, to wlasnie bylo zle. Gapa ze mnie i w dodatku czytam bez zrozumienia:) mozliwe, ze to przemeczenie :lammer:

 

Ok zmienie ten "krwisty " napis na normale nie rzucajace sie w oczy literki.

 

Nie jest to ironia. Po prostu dobrze jest wiedziec, ze jest wsrod nas osoba ktora jak juz wczesniej wspomnialem potrafi pomoc i w dodatku jest za to nagradzana. Nie jestem ironiczny z natury wiec WalDo mozez mi wierzyc ze gratulacje sa szczere.

 

Jeszcze raz dzieki za pomoc i do uslyszenia :)

 

Pozdrawiam,

c

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...