Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
Witam! mam taki problem:
Mam plik z taką zawartością:
~
numer 1234
Kowalski Jan
dfsjksdlf
ioerewoiruewior
rewrewrew itp itp
^
~
numer 5345
Nowak Alojzy
adasdasdfsjksdlf
ghfghioerewoiruewior
ghfgttrewrewrew itp itp
^
~
numer 7284
Psikuta Alfred
jhjgjdfsjksdlf
lklkioerewoiruewior
tyrtyrewrewrew itp itp
^
~
numer 2237
Kotowicz Bernart
dfsdsadsjksdlf
rerwioerewofgfdiruewior
qwqwqrewrewrew itp itp
^
Jak widać dane każdej osoby objęte są znakami ~ i ^. I teraz pytanie :
Jest mozliwość podzielenia tego pliku na wiele ( tak myślałem żeby użyć tych znaków - ~ i ^ ) aby w każdym była jedna osoba a nazwą pliku był numer który występuje u każdej osoby?? Np:
plik o nazwie: 1234
z danymi :
numer 1234
Kowalski Jan
dfsjksdlf
ioerewoiruewior
rewrewrew itp itp
drugi plik o nazwie: 5345
z danymi:
numer 5345
Nowak Alojzy
adasdasdfsjksdlf
ghfghioerewoiruewior
ghfgttrewrewrew itp itp
itd. Jest mozliwość zrobienia tego w bashu albo z pomocą php??
Był bym bardzo wdzięczny za pomoc!
Offline
Jest możliwe zrobienie tego w bashu. Czytasz po kolei wiersze i przekierowujesz je do pliku. Znak "^" i puste linie pomijasz, a jak trafisz na tyldę to tworzysz nowy plik.
Offline
Noo ok!Schemat nie problem obmyślić, tylko czym to zrobić??
Offline
Heh, pogooglaj za 'Advanced Bash Scripting', na debian.linux.pl w dziale howto masz polecenia z krótkim opisem
Na szybko: tworzenie pliku - touch
przekierowanie >>, z nadpisaniem > itp.
Offline
Noo spokoo! tylko że tam są wszystkie polecenia w bashu nie mówie że zazwyczaj łączy sie polecenia. A zna ktos konkretną metodę której mogę użyć dla rozwiązania problemu??
Offline
debbie napisał(-a):
Schemat nie problem obmyślić
Obmyślaj,
touch skript.sh && nano skript.sh && chmod +x skript.sh && bash -x skript.sh
Ta metoda działa w każdym przypadku.
Offline
No widze że ładnie operujesz poleceniami w bashu! Gorzej tylko ze zrozumieniem tego o co mi chodzi! Takie podstawy łączenia i operacji na plikach to ja znam! Chodzi mi tylko o konkretny przykład użycia konkretnego polecenia które z jednego pliku zrobi mi pare według podanych kryteriów.
A jak masz zamiar mi tłumaczyć jak łączyć skrypty ze sobą i tłumaczyć co znaczy touch to zastanów sie czy chcesz pomóc czy się powymądrzać.
Ostatnio edytowany przez debbie (2009-01-29 17:58:53)
Offline
Ja bym raczej użył awka. A dokładniej poszukał kogoś, kto awka zna lepiej ode mnie. :)
Offline
Nie chodzi o kwestię wymądrzania się, po prostu nieprecyzyjnie formułujesz pytania w związku z czym nie do końca wiem z jakim poziomem zaawansowania mam do czynienia.
tutaj miałem problem mniejszego kalibru, ale zapoznanie się z nim zapewne rozjaśni Ci trochę sprawę. snah podał tam bardzo wartościowego linka.
Offline
Noo awk to dobra sprawa! Tyle tylko że musiał bym się go uczyć w tej chwili od podstaw bo nieuzywałem go wcześniej.
Offline
Polecam, znajomość przydaje się częściej niż można przypuszczać :).
Offline
debbie napisał(-a):
Noo awk to dobra sprawa! Tyle tylko że musiał bym się go uczyć w tej chwili od podstaw bo nieuzywałem go wcześniej.
na prawde warto ...
a tutaj robimy np. (piasane z glowy wiec moze nie dzialac)
grep -v '^[~^*]$' plik_wejsciowy | while read p t; do if [ $p == "numer" ]; then plik=$2 fi echo "$p $t" > $plik done
Ostatnio edytowany przez bercik (2009-01-29 20:07:07)
Offline
po wykonaniu tego sktyptu:
plik wykon.sh:
grep -v '^[~^*]$' plik.txt | while read p t; do
if [ $p == "numer" ]; then
plik=$2
fi
echo "$p $t" > $plik
done
na plik.txt w który zawarte są te dane
wyrzuca mi:
./wykon.sh: line 6: $plik: ambiguous redirect
./wykon.sh: line 6: $plik: ambiguous redirect
./wykon.sh: line 6: $plik: ambiguous redirect
./wykon.sh: line 6: $plik: ambiguous redirect
./wykon.sh: line 6: $plik: ambiguous redirect
./wykon.sh: line 3: [: ==: unary operator expected
./wykon.sh: line 6: $plik: ambiguous redirect
./wykon.sh: line 3: [: ==: unary operator expected
./wykon.sh: line 6: $plik: ambiguous redirect
./wykon.sh: line 6: $plik: ambiguous redirect
./wykon.sh: line 6: $plik: ambiguous redirect
./wykon.sh: line 6: $plik: ambiguous redirect
./wykon.sh: line 6: $plik: ambiguous redirect
./wykon.sh: line 6: $plik: ambiguous redirect
./wykon.sh: line 3: [: ==: unary operator expected
./wykon.sh: line 6: $plik: ambiguous redirect
./wykon.sh: line 3: [: ==: unary operator expected
./wykon.sh: line 6: $plik: ambiguous redirect
./wykon.sh: line 6: $plik: ambiguous redirect
./wykon.sh: line 6: $plik: ambiguous redirect
./wykon.sh: line 6: $plik: ambiguous redirect
./wykon.sh: line 6: $plik: ambiguous redirect
./wykon.sh: line 6: $plik: ambiguous redirect
./wykon.sh: line 3: [: ==: unary operator expected
./wykon.sh: line 6: $plik: ambiguous redirect
./wykon.sh: line 3: [: ==: unary operator expected
./wykon.sh: line 6: $plik: ambiguous redirect
./wykon.sh: line 6: $plik: ambiguous redirect
./wykon.sh: line 6: $plik: ambiguous redirect
./wykon.sh: line 6: $plik: ambiguous redirect
./wykon.sh: line 6: $plik: ambiguous redirect
./wykon.sh: line 6: $plik: ambiguous redirect
./wykon.sh: line 3: [: ==: unary operator expected
./wykon.sh: line 6: $plik: ambiguous redirect
./wykon.sh: line 3: [: ==: unary operator expected
./wykon.sh: line 6: $plik: ambiguous redirect
Ostatnio edytowany przez debbie (2009-01-30 12:50:36)
Offline
pisalem ze nietestowane i moga bycdrobmne bledy, ale mozna bylo sobie poprawic ...tam byly 3 drobne bledy i jeden bashyzm ...
grep -v '^[~^]*$' plik.txt | while read p t; do if [ "$p" = "numer" ]; then plik=$t fi echo "$p $t" >> $plik done
Offline
aaaaaaaa Jesteśśś poprostuu genialnyy!! O to mi chodziło - dziękówka!
Offline
Teraz próbuje przerobić pliki wyjściowe na pdf, tzn
otrzymałem pliki z numerami np plik o nazwie - 1234
właściewie napisałem wcześniej te dane testowo bo dane każdej osoby są objęte kodami html czyli np:
~
numer 1234
<html>
<table border=1 width=100%>
<tr><td>Kowalski Jan</td></tr>
<tr><td>dfsjksdlf</td></tr>
<tr><td>ioerewoiruewior<td></tr>
<tr><td>rewrewrew itp itp</td></tr>
</table>
^
~
numer 5345
<html>
<table border=1 width=100%>
<tr><td>Nowak Alojzy</td></tr>
<tr><td>adasdasdfsjksdlf</td></tr>
<tr><td>ghfghioerewoiruewior</td></tr>
<tr><td>ghfgttrewrewrew itp itp</td></tr>
</table>
^
i jest ok - skrypt robi mi z jednego pliku więcej o nazwach numerów:)
Ale to nie koniec bo chodzi mi o przerobienie np danego pliku przykładowo 5345
na pdf ale tak żeby po otwarciu tego pdf'a pokazywał te dane z tabelami ( bez kodu html )
Wiem że jest możliwość użycia:
a2ps --output 5345.ps 5345
- czyli przerobi mi go na postscripta a następnie :
ps2pdf12 5345.ps 5345.pdf
czyli mam pdf'a z postscripta ale dość że pokazuje mi kod html'a to wykrzacza polskie znaki.
Jest możliwość wogóle zrobienia czegoś takiego??? Ma ktoś jakiś pomysł??
W sumie to można go wrzucić do doc'a za pomocą komendy php np:
php 5345 > 5345.doc
i doc mi wyswietla z tabelami a nie kod html'a
może prościej by było wtedy przekonwertować z doc'a do pdf???
Ale właśnie chodzi mi tylko o bash czyli bez ręcznych opcji eksportu z doc do pdf jakie ma np open office.
Ostatnio edytowany przez debbie (2009-01-30 19:19:37)
Offline
ja bym to robil tak:
1. przerabiamy sedem na latex
2. potem dajemy pdflatex i gotowe ...
Offline
dało by radę trochę jaśniej?? - za pomocą sed'a konwersja z html na latex:
czyli utworzyłem sobie html2latex.sed który zawierał kod:
#
# goal: to convert as much of an html document as possible to an
# equivalent sed script.
# i understand that, because of this approach, this can never be 100%
# accurate, but really what I'm after is the conversion of things
# like tables and lists.
# note that my html tags are pretty accurate here, but my latex tags
# leave some things to be desired.
#
s?>?>?g
s?<?<?g
s? ? ?g
s?<html>??ig
s?</html>??ig
s?<head>??ig
s?</head>??ig
s?<title>\([^<]*\)</title>?\\section*{\1}?ig
s?<body>?\\begin{document}?ig
s?</body>?\\end{document}?ig
# i don't know what the latex tag should be here for a paragraph.
s?<p>\([^<]*\)</p>?{\1}?ig
s?<center>??ig
s?</center>??ig
#-------#
# TABLE #
#-------#
s?<table.*>?\\begin{tabular}{}{}?ig
s?<\/table.*>?\\end{tabular}{}{}?ig
#-----------#
# TABLE ROW #
#-----------#
# nothing at the beginning of a table row
s?<tr>??ig
# two backslashes at the end of a table row
s?</tr>?\\\\?ig
#--------------#
# TABLE COLUMN #
#--------------#
s?<td.*>?\&?ig
#-------#
# FONTS #
#-------#
s?<b>\([^<]*\)</b>?\\textbf{{\1}}?ig
s?<em>\([^<]*\)</em>?\\textit{{\1}}?ig
s?<font .*>??ig
s?</font>??ig
s?<br>?////?g
#--------#
# BUTTON #
#--------#
# guessing on button syntax here
s?<input
type="button".*value="\([^<]*\)">?\\begin{fbox}\1\\end{fbox}?ig
# need to do something here to handle multiline mode
s?<select.*<option.*selected>\([^<]*\)</option>?\\begin{fbox}{\1}\\end{fbox}?g
# delete all other option tags
#?<option.*</option>?d
# handle preformatted things
s?<pre>?\\begin{verbatim}?ig
s?</pre>?\\end{verbatim}?ig
s?<code>?\\begin{verbatim}?ig
s?</code>?\\end{verbatim}?ig
# handle bulleted lists.
# todo: fix "itemize" vs. "enumerate"
s?<ol.*>?//begin{enumerate}?ig
s?</ol.*>?//end{enumerate}?ig
s?<ul.*>?//begin{enumerate}?ig
s?</ul.*>?//end{enumerate}?ig
s?<li>\([^<]*\)</li>?\\item {\1}?g
s?<li>\([^<]*\).*$?\\item {\1}?g
s?</li>??g
s?<!--\([^<]*\)-->?\\begin{comment}{\1}\\end{comment}?ig
Nastepnie wykonałem:
sed -f html2latex.sed 5345.html > 5345.tex
No i jest ok bo przerobił mi go.
Tylko jak teraz dodajemy pdflatex??? w jaki sposób ??
Ostatnio edytowany przez debbie (2009-02-02 11:32:37)
Offline
Może mi ktoś powiedzieć jak zainstalować Latex'a czy pdflatex??? Bo googluje chyba z 3 godziny i nie znalacłem nic konkretnego,
jak wpisuje:
apt-get install texlive texlive-doc-pl texlive-lang-polish
to dostaje :
Reading package lists... Done
Building dependency tree... Done
You might want to run `apt-get -f install' to correct these:
The following packages have unmet dependencies:
latex-beamer: Depends: pgf (>= 1.00-1) but it is not going to be installed
Depends: latex-xcolor (>= 2.00-1) but it is not going to be installed
Depends: texlive-latex-base but it is not going to be installed or
tetex-extra but it is not going to be installed
texlive: Depends: texlive-fonts-recommended (>= 2007-11) but it is not going to be installed
Depends: texlive-latex-recommended (>= 2007-11) but it is not going to be installed
Depends: texlive-latex-base (>= 2007-11) but it is not going to be installed
texlive-doc-pl: Depends: tex-common (>= 1.11) but it is not going to be installed
Depends: texlive-doc-base (>= 2007) but it is not going to be installed
Depends: texlive-common (>= 2007) but it is not going to be installed
texlive-lang-polish: Depends: tex-common (>= 1.11) but it is not going to be installed
Depends: texlive-base (>= 2007-11) but it is not going to be installed
Depends: texlive-common (>= 2007) but it is not going to be installed
Depends: texlive-latex-base (>= 2007-11) but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
także akcja słaba się robi! Był bym wdzięczny za pomoc bo mam właściwie końcówkę całości tylko zostało mi dodawanie pdflatex - według rady
bercik'a.
Offline
You might want to run `apt-get -f install' to correct these:
wykonałeś to?
to nie problem z Lateksem tylko z aptem :P
Offline
no tak po wrzuceniu: apt-get -f install dostałem:
(Reading database ... 101786 files and directories currently installed.)
Unpacking libcups2 (from .../libcups2_1.3.8-1lenny4.1_i386.deb) ...
dpkg: error processing /var/cache/apt/archives/libcups2_1.3.8-1lenny4.1_i386.deb (--unpack):
trying to overwrite `/usr/lib/libcups.so.2', which is also in package libcupsys2-gnutls10
dpkg-deb: subprocess paste killed by signal (Broken pipe)
Unpacking cups-common (from .../cups-common_1.3.8-1lenny4.1_all.deb) ...
dpkg: error processing /var/cache/apt/archives/cups-common_1.3.8-1lenny4.1_all.deb (--unpack):
trying to overwrite `/usr/share/cups/charsets/utf-8', which is also in package cupsys
dpkg-deb: subprocess paste killed by signal (Broken pipe)
Errors were encountered while processing:
/var/cache/apt/archives/libcups2_1.3.8-1lenny4.1_i386.deb
/var/cache/apt/archives/cups-common_1.3.8-1lenny4.1_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
pomogłoo:
dpkg --force-overwrite -i /var/cache/apt/archives/cups-common_1.3.8-1lenny4.1_all.deb
teraz poszło z tym że dalej niebardzo wiem jak zrobić z tex pdfa???
bo jak mu dam pdflatex 5345.tex to chwile mysli później rzuca błędami itd.
Ostatnio edytowany przez debbie (2009-02-02 15:45:12)
Offline
bo taki plik latexowy musi miec naglowek i stopke ... zobacz np. http://www.opcode.eu.org/latex/
Offline
Strony: 1