Portál AbcLinuxu, 12. května 2025 08:29

Dotaz: koniec riadku unix a windows v jednom subore!

3.7.2007 15:54 kata
koniec riadku unix a windows v jednom subore!
Přečteno: 1459×
Odpovědět | Admin
Ahoj, zas ja. mam subor
To: "MENO PRIEZVISKO" menoemail.biz
Subject: Com Lite Command message
From: commandcommand.net
Content-Type: text/plain; format=flowed; delsp=yes; charset=utf-8
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Date: Thu, 07 Jun 2007 12:00:00 +0200

1
taaaaemail.biz
-----BEGIN RSA PUBLIC KEY-----
MIICCgKCAgEAtNapmzIXB4AGrTPk6SylW9C4chFDo9t9SVWzE1euNqDCyy4eXhed
ya/yBN5TND4S3NatrL7cNpj8xV/YRB4aSGuxqKjFrUWN4v/K48b3+h4mf/ygYVyL
aBIKnmE3VHRtysdfsdffsPeaIGfXkiFFsn7fcnZSWTzZVXMlSC1fNoR0067vxTZw
Xd1+eJK8/T70NIBOqniF+NFWZBr1aPf/Xx8BR1K6fllBr2gTbw/8JcfDqYsThWas
PsFxfCaFVODA+di4jjY7TH9Ce+lx2tWFiwFekcqZeVvQlYtbUxddqp04dr39auz1
n7WVas6l/ufcaMKXdBL8Hmjmv1yv3qp5wTsMmdqDjNmnO1na+F96EcJWDmvfoiWl
ouFVXN4iwuNnwvfJ+PzmGo5AqinXYECnmEeRBCQHb5RGwVzZxx9PTruKMawY5oiM
M2i9sYc0VgRrsdfsdfsdfafdahtrhhgfh7fwjlCJ1shp7GfTFi+GF0/pgAcZLM2u
k5TgvHK2tWN0305f/J6IzCcxfPm7Np/5Q+HRgQCRIkTsm6/480ElbNwRNETFBjTl
Ajz+9chXqmraxFPn/duNFlftXtkMKoIowLCQ6c5LWVt+4MA66unIh8PxLjFSUfI3
ACZkH2nY2fmX424xvaKtmNocTNzZ/u9274pbhUTT1YhvfZH1/znHGwECAwEAAQ==
-----END RSA PUBLIC KEY-----
9
You have added secure key for menoemail.biz.
a chcem aby to od zaciatku suboru az po 1 bol koniec riadku ako v windowse (cize 10) a od jednotky po koniec ako v unixe (cize 10 13), mozete mi poradit ako to spravit a v com?
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

3.7.2007 16:32 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: koniec riadku unix a windows v jednom subore!
Odpovědět | | Sbalit | Link | Blokovat | Admin
Rozdělte si to na dvě části, převeďte konce řádků v každé zvlášť a pak to spojte třeba pomocí cat.
3.7.2007 17:01 kata
Rozbalit Rozbalit vše Re: koniec riadku unix a windows v jednom subore!
cat je v poho, no myslim nieakym nastrojom, pre prikazovy riadok, aby iso vytvorit script!
3.7.2007 17:07 kata
Rozbalit Rozbalit vše Re: koniec riadku unix a windows v jednom subore!
cat je pre prikazovy riadok na spajanie, ale pre prepisanie konca riadkov tych suborou nieco do prikazoveho nie je?
3.7.2007 19:33 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: koniec riadku unix a windows v jednom subore!
Nejspíš budete mít v systému něco jménem dostounix, unixtodos, d2u nebo u2d. Případně si můžete napsat vlastní.
4.7.2007 09:52 Ash | skóre: 53
Rozbalit Rozbalit vše Re: koniec riadku unix a windows v jednom subore!
Buď asi tr nebo sed. Jelikož chcete jen část souboru, tak sed.
3.7.2007 17:59 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: koniec riadku unix a windows v jednom subore!
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ty konce řádků jsi nějak pomíchal. Chtěl jsi to takhle nebo naopak?
#!/usr/bin/python
import sys

first_part = True
for line in sys.stdin:
    if first_part:
        line = line.rstrip('\n')
        if line == '1':
            first_part = False
        line = line + '\r\n'
    sys.stdout.write(line)
4.7.2007 09:38 Ash | skóre: 53
Rozbalit Rozbalit vše Re: koniec riadku unix a windows v jednom subore!
Python, omg :D Více viz sed.
4.7.2007 12:42 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: koniec riadku unix a windows v jednom subore!
Řešení v sedu kupodivu běží pomaleji než v Pythonu. Ale sed zase startuje rychleji. Takže sed může (měřeno na mém počítači) ušetřit maximálně 100 milisekund - pro delší běh je rychlejší Python. Jo a sed taky ušetří 4 mega paměti.
Ale měl jsem napsat raději "sed, omg" - ušetřil bych si čas strávený testováním. Btw, musel jsem to trochu upravit, jinak
sed: -e expression #1, char 10: unknown command: `\'
4.7.2007 13:59 Ondřej Kubečka | skóre: 29 | blog: datlovo | Ulm
Rozbalit Rozbalit vše Re: koniec riadku unix a windows v jednom subore!
No ja spise narazil a to, ze sed, na ktery jsem aktualne koukal nebyl GNU sed, takze na "komplikovanosti" typu 's/$/\r/' jsem mohl vesele zapomenout... Proste '\r' v teto implementaci rozhodne nezname carriage return. Takze bych se asi ohlizel treba spise po (n)awku.
4.7.2007 09:02 Dejv | skóre: 37 | blog: Jak ten blog nazvat ... ? | Ostrava
Rozbalit Rozbalit vše Re: koniec riadku unix a windows v jednom subore!
Odpovědět | | Sbalit | Link | Blokovat | Admin
koniec riadku ako v windowse (cize 10) ... ako v unixe (cize 10 13)
S tema koncema radu v tom mas trochu hokej. Windows pouziva pro konec radku dvojici znaku <CR><LF>, cili 0x0D 0x0A neboli 13 10. Linux pouziva pouze <LF>, cili 0x0A neboli 10.

Dejf
Pevně věřím, že zkušenější uživatelé mě s mými nápady usměrní a pošlou tam, kam tyto nápady patří...
4.7.2007 09:37 Ash | skóre: 53
Rozbalit Rozbalit vše Re: koniec riadku unix a windows v jednom subore!
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud je v souboru jako výchozí Windows/CRLF:
sed -i -e "/^1^M$/,$s/^M$//" soubor.txt
Pokud je v souboru jako výchozí Unix/LF:
sed -i -e "1,/^$/s/$/\r/" soubor.txt
Pozn 1: ^M je to, co v bashi vznikne Ctrl+V, Enter, nebo to můžete nahradit sekvencí "\x0D" (GNU sed). Pozn 2: \r je v GNU sed, jinak nahradit... no jde to různě ;)
4.7.2007 09:45 Ash | skóre: 53
Rozbalit Rozbalit vše Re: koniec riadku unix a windows v jednom subore!
Tedy, koukám máte v tom vážně hokej :) a chcem aby to od zaciatku suboru az po 1 bol koniec riadku ako v windowse (cize 10) a od jednotky po koniec ako v unixe (cize 10 13), mozete mi poradit ako to spravit a v com?
Ako v windowse: tak to je CRLF, tedy 0D0A, tedy 1310.
Ako v unixe: tak to je LF, tedy 0A, tedy 13.
Vycházel jsem z vaší slovní interpretace, čili že začátek chcete Windows CRLF a zbytek Unix LF. Pokud jste to chtěl obráceně (začátek Unix LF a pak Windows CRLF), tak jen přehoďte rozsahy:
Výchozí DOS CRLF:
sed -i -e "1,/^^M$/s/^M$//" soubor.txt

Výchozí Unix LF:
sed -i -e "/^1$/,$s/$/\r/" soubor.txt
Snad jsem to nezmotal.
4.7.2007 09:49 Ash | skóre: 53
Rozbalit Rozbalit vše Re: koniec riadku unix a windows v jednom subore!
Jo a v jednom případě se řídím prázdným řádkem (to se mi jeví systémové, nebo tělo mailu je od hlaviček odděleno prázdným řádkem) a v druhém případě tou jedničkou (to už ne, nevím jestli tam je vždy jednička, to asi budete vědět vy). Šlo by to v tomto směru doladit.
4.7.2007 09:54 Ash | skóre: 53
Rozbalit Rozbalit vše Re: koniec riadku unix a windows v jednom subore!
Myšleno "tedy 10", napsáno "tedy 13".
4.7.2007 14:22 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: koniec riadku unix a windows v jednom subore!
Odpovědět | | Sbalit | Link | Blokovat | Admin
perl -nle 'BEGIN{$\="\r\n"}; print; $\="\n" unless length'

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.