Nie jesteś zalogowany na forum.

#1 2016-06-28 10:54:22

addos
Użytkownik
Data rejestracji: 2015-09-01
Liczba postów: 151

sed - jak zmusić go, by nie dodawał znaku końca linii?

Sporo bawię się teraz programem sed i za każdym razem dodaje mi on znak nowej linii do ostatniej linii, nawet jeżeli plik źródłowy takiego znaku nie miał.
Ponieważ na razie są to dziesiątki testów a ja cały porównuję 2 pliki "przed" i "po" więc za każdym razem mam różną ilość linii co doprowadza mnie do nerwicy :)
Czy da się zakazać sed'owi tworzenie tego znaku? Jeżeli tak, to jak?

Czy ten znak jest koniecznie do czegoś potrzebny?
Wiem, że z reguły edytory tekstowe dodają taki znak na końcu pliku (ew. można to w opcjach włączyć lub wyłączyć).
Zastanawiam się jednak czy w jakichś specyficznych przypadkach jego istnienie lub brak może czymś skutkować?
Czy znane są przypadki, że jakiś plik konfiguracyjny bez takiego znaku końca linii (ostatniej oczywiście) może źle działać albo nie być odczytany?
Wolę dmuchać na zimne :)

Ostatnio edytowany przez addos (2019-10-21 08:53:13)


Info przy ew. problemach: Arch Linux x64, Plasma 5 (aktualna), CPU C2D E8400 (3GHz, 6MB cache), ASUS P5Q-PRO (BIOS, bez UEFI), RAM 8GB (DDR2, Dual), GPU GF 9600GT (PCI-E, 512MB), SSD 250GB MLC (GPT, discard, Grub 2, all ext4), HDD 1TB (7200, SATA, AHCI, NCQ, MBR, all ext4), monitor [email protected] DVI, audio: ASUS Xonar DX (PCI-E x1, 5.1 analog, ALSA bez PulseAudio), klaw. PS/2, mysz USB

Offline

#2 2019-10-15 02:53:33

rzax666
Użytkownik
Data rejestracji: 2018-12-11
Liczba postów: 43

Odp: sed - jak zmusić go, by nie dodawał znaku końca linii?

tak

Offline

#3 2019-10-15 20:39:38

addos
Użytkownik
Data rejestracji: 2015-09-01
Liczba postów: 151

Odp: sed - jak zmusić go, by nie dodawał znaku końca linii?

nie


Info przy ew. problemach: Arch Linux x64, Plasma 5 (aktualna), CPU C2D E8400 (3GHz, 6MB cache), ASUS P5Q-PRO (BIOS, bez UEFI), RAM 8GB (DDR2, Dual), GPU GF 9600GT (PCI-E, 512MB), SSD 250GB MLC (GPT, discard, Grub 2, all ext4), HDD 1TB (7200, SATA, AHCI, NCQ, MBR, all ext4), monitor [email protected] DVI, audio: ASUS Xonar DX (PCI-E x1, 5.1 analog, ALSA bez PulseAudio), klaw. PS/2, mysz USB

Offline

#4 2019-10-16 04:16:57

rzax666
Użytkownik
Data rejestracji: 2018-12-11
Liczba postów: 43

Odp: sed - jak zmusić go, by nie dodawał znaku końca linii?

readline jak ma zadzialac jak niewie kiedy koniec linii? trzeba sie bronic przed debilami ktorzy juz czychaja zeby jakies xml czy inny regres wprowadzic ;D

Offline

#5 2019-10-16 09:43:18

addos
Użytkownik
Data rejestracji: 2015-09-01
Liczba postów: 151

Odp: sed - jak zmusić go, by nie dodawał znaku końca linii?

Koniec linii, to koniec linii. Oznacza to, że za znakiem końca linii będzie występować kolejna linia. Znak ten oddziela dwie linie od siebie. Proste. Skoro kolejnej linii nie ma, to nie wiem po co miałby się na końcu znajdować znak końca linii.

Natomiast nie widzę problemu z tym, że readline nie wiedziałby kiedy jest koniec. Można oczekiwać na znak końca linii lub na znak końca pliku. Przecież koniec pliku, zakończyłby się przyjęciem "wirtualnego końca linii". Dopisywanie do pliku znaku końca linii ingeruje w treść pliku, która nie powinna mieć miejsca. Mogą wystąpić sytuacje, gdzie każdy znak w pliku może mieć znaczenie, a dodawanie tego ot tak sobie jest wg mnie niedopuszczalne. Być może w plikach konfiguracyjnych z jakichś względów ten znak musi występować, tego nie wiem. Wiem natomiast, że pliki tekstowe nie są zarezerwowane tylko dla plików konfiguracyjnych. Plik tekstowy może zawierać cokolwiek sobie zażyczę, a nikt ani nic nie powinno sobie tam dopisywać żadnego innego znaku.

Podtrzymuję pytanie: czy da się zmusić program sed do nie wykonywania tego działania?


Info przy ew. problemach: Arch Linux x64, Plasma 5 (aktualna), CPU C2D E8400 (3GHz, 6MB cache), ASUS P5Q-PRO (BIOS, bez UEFI), RAM 8GB (DDR2, Dual), GPU GF 9600GT (PCI-E, 512MB), SSD 250GB MLC (GPT, discard, Grub 2, all ext4), HDD 1TB (7200, SATA, AHCI, NCQ, MBR, all ext4), monitor [email protected] DVI, audio: ASUS Xonar DX (PCI-E x1, 5.1 analog, ALSA bez PulseAudio), klaw. PS/2, mysz USB

Offline

#6 2019-10-21 07:23:54

dracorp
Użytkownik
Lokalizacja: Poland, Gdańsk
Data rejestracji: 2015-09-06
Liczba postów: 110
WWW

Odp: sed - jak zmusić go, by nie dodawał znaku końca linii?

Zdecyduj się jaką chcesz odpowiedzieć. Na pierwsze pytanie tak, ale pewnie zależy od programu. Też już miałem taki przypadek, że program źle działał bo brakowało znaku końca linii na końcu pliku. Czy programy tekstowe z reguły dodają to bym się spierał. Vim, nano mi nie dodawał.
Co do seda to musisz poszukać w dokumentacji.

Offline

#7 2019-10-21 08:51:28

addos
Użytkownik
Data rejestracji: 2015-09-01
Liczba postów: 151

Odp: sed - jak zmusić go, by nie dodawał znaku końca linii?

Być może rzeczywiście temat wątku źle sformułowałem. Jednak niezależnie od tego czy ten znak jest potrzebny w plikach konfiguracyjnych czy nie, to nie powinien on być tam dodawany automatycznie przez programy. To tak jakby powiedzieć, że kropka zawsze powinna być na końcu zdania, więc taki sed, vim, nano, czy cokolwiek innego będzie sobie taka kropkę dodawać. Rozumiesz chyba o co chodzi? Skoro jednak mi vim nie dodaje znaku końca linii automatycznie przy wyjściu z programu lub w trakcie jego działania, to nie rozumiem z jakiej okazji sed to robi.

Zmieniam temat wątku:
Było: znak nowej linii w plikach tekstowych - czy konieczny?
Jest: sed - jak zmusić go, by nie dodawał znaku końca linii?

Ostatnio edytowany przez addos (2019-10-21 08:52:52)


Info przy ew. problemach: Arch Linux x64, Plasma 5 (aktualna), CPU C2D E8400 (3GHz, 6MB cache), ASUS P5Q-PRO (BIOS, bez UEFI), RAM 8GB (DDR2, Dual), GPU GF 9600GT (PCI-E, 512MB), SSD 250GB MLC (GPT, discard, Grub 2, all ext4), HDD 1TB (7200, SATA, AHCI, NCQ, MBR, all ext4), monitor [email protected] DVI, audio: ASUS Xonar DX (PCI-E x1, 5.1 analog, ALSA bez PulseAudio), klaw. PS/2, mysz USB

Offline

#8 2019-10-21 09:46:23

pavbaranov
Administrator
Lokalizacja: Kraków
Data rejestracji: 2015-08-22
Liczba postów: 2,029
WWW

Odp: sed - jak zmusić go, by nie dodawał znaku końca linii?

Może inaczej - pokaż tę komendę sed oraz to co chcesz osiągnąć. Prawdopodobnie wyłącznie jak ktoś zobaczy Twoją komendę seda, to będzie potrafił ją poprawić.


Hardware: AMD: A8-7410 APU with Radeon R5; Arch testing+kde-unstable, kernel linux-pb, KDE+poprawki
https://deviantart.com/pavbaranov/ https://pavbaranov.blogspot.com https://linux-pavbaranov.blogspot.com

Offline

#9 2019-10-21 09:51:20

addos
Użytkownik
Data rejestracji: 2015-09-01
Liczba postów: 151

Odp: sed - jak zmusić go, by nie dodawał znaku końca linii?

Po 4 latach? :)

Dawno się tym nie bawiłem, więc nie pamiętam.
Jednak gdy znowu będę z niego korzystał i pojawi się ten sam problem, to wrócę tutaj i podam polecenie.


Info przy ew. problemach: Arch Linux x64, Plasma 5 (aktualna), CPU C2D E8400 (3GHz, 6MB cache), ASUS P5Q-PRO (BIOS, bez UEFI), RAM 8GB (DDR2, Dual), GPU GF 9600GT (PCI-E, 512MB), SSD 250GB MLC (GPT, discard, Grub 2, all ext4), HDD 1TB (7200, SATA, AHCI, NCQ, MBR, all ext4), monitor [email protected] DVI, audio: ASUS Xonar DX (PCI-E x1, 5.1 analog, ALSA bez PulseAudio), klaw. PS/2, mysz USB

Offline

#10 2019-10-21 11:50:14

pavbaranov
Administrator
Lokalizacja: Kraków
Data rejestracji: 2015-08-22
Liczba postów: 2,029
WWW

Odp: sed - jak zmusić go, by nie dodawał znaku końca linii?

W takim razie zamykam, bo ten temat sensu jak się okazuje nie ma. Jeśli będziesz miał problem, to założysz nowy temat i sprecyzujesz w nim problem.


Hardware: AMD: A8-7410 APU with Radeon R5; Arch testing+kde-unstable, kernel linux-pb, KDE+poprawki
https://deviantart.com/pavbaranov/ https://pavbaranov.blogspot.com https://linux-pavbaranov.blogspot.com

Offline

Stopka

Forum oparte na FluxBB