Potrzebujesz pomocy z C, C++, perl, python, itp.
szkodnik25
Posty: 2 Rejestracja: 09 grudnia 2012, 20:28
Post
autor: szkodnik25 » 09 grudnia 2012, 20:30
Mamy dany plik "nazwa" o strukturze danych :
imie:nazwisko:PESEL
Skrypt powinien wypisać dane wszystkich osób o imieniu Jan w postaci:
imie nazwisko - PESEL: ----------
Wyglada on tak:
[code]
#!/bin/bash
[/code] Kod: Zaznacz cały
while read LINE
do
x=`echo ${LINE} | cut -d ':' -f1`
y=`echo ${LINE} | cut -d ':' -f2`
z=`echo ${LINE} | cut -d ':' -f3`
echo $x $y "PESEL:" $z
done < nazwa
Jednak nie wypisuje mi ostatniej linii.
LordRuthwen
Moderator
Posty: 2341 Rejestracja: 18 września 2009, 21:45
Lokalizacja: klikash?
Post
autor: LordRuthwen » 09 grudnia 2012, 21:27
Dlatego, że ta pętla jak nie widzi znaku końca linii to się dla tej linii nie wykonuje, wciśnij enter po ostatnim wpisie.
A nie prościej by było zamiast tego:
Kod: Zaznacz cały
x=`echo ${LINE} | cut -d ':' -f1`
y=`echo ${LINE} | cut -d ':' -f2`
z=`echo ${LINE} | cut -d ':' -f3`
echo $x $y "PESEL:" $z
Zrobić tak?
Kod: Zaznacz cały
echo $LINE | awk -F: '{print $1 " " $2 " - PESEL: " $3}'
No i nie masz nigdzie ograniczenia tylko dla imienia "Jan", o czym wspominasz.
szkodnik25
Posty: 2 Rejestracja: 09 grudnia 2012, 20:28
Post
autor: szkodnik25 » 09 grudnia 2012, 21:42
LordRuthwen pisze: Dlatego, że ta pętla jak nie widzi znaku końca linii to się dla tej linii nie wykonuje, wciśnij enter po ostatnim wpisie.
Tak, ju
ż si
ę zorientowałem :P Nie mieliśmy jeszcze awk, więc wolę zrobić w ten sposób. Dziękuj
ę serdecznie za pomoc
O graniczenie dodałem tu:
lessmian2
Member
Posty: 1088 Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków
Post
autor: lessmian2 » 10 grudnia 2012, 20:53
Trochę poniewczasie, ale w bashu najprościej będzie to pewnie tak:
Kod: Zaznacz cały
while IFS=: read -r imie nazwisko pesel; do echo "$imie $nazwisko PESEL: $pesel"; done <plik.txt | grep Jan
Awk daje trochę większe pole do uproszczeń:
Kod: Zaznacz cały
awk -F':' '/Jan/ {print $1" "$2" PESEL:" $3}' plik.txt
markossx
Beginner
Posty: 489 Rejestracja: 26 maja 2007, 16:01
Lokalizacja: Polska
Post
autor: markossx » 11 grudnia 2012, 16:04
Nie ważne
lessmian2 , że poniewczasie - Twoje rady zawsze cenne