Forum Linux.pl

Programowanie => Języki skryptowe => Wątek zaczęty przez: w 2007-05-29, 21:17:43

Tytuł: skrytp: usuwajacy wolne linie
Wiadomość wysłana przez: w 2007-05-29, 21:17:43
witam potrzebuje skryptu który bedzie:

usuwal wolne linie w pliku PODANYM jako parametr...
Tytuł: skrytp: usuwajacy wolne linie
Wiadomość wysłana przez: ultr w 2007-05-30, 02:05:21
Możesz wykorzystać `awk` ze sprawdzaniem $0!=""

Więcej: `man awk` i google :)
Tytuł: skrytp: usuwajacy wolne linie
Wiadomość wysłana przez: MiCu MiCu w 2007-05-30, 12:02:14
Cześć,

Tu nie trzeba skryptu :-) , wystarczy (e)grep, np.

egrep -v "^[[:blank:]]*$" PLIK

Pozdrawiam
Micu
Tytuł: skrytp: usuwajacy wolne linie
Wiadomość wysłana przez: w 2007-05-30, 18:27:31
2007-05-30 12:02:14 micu napisał:

> Cześć,
 >
 > Tu nie trzeba skryptu :-) , wystarczy (e)grep, np.
 >
 > egrep -v "^[[:blank:]]*$" PLIK
 >
 > Pozdrawiam
 > Micu
 >



tylko ze ta operacja Mosi byc wykonana wlasnie przez skrypt....
a nie pojedynczo komende....
     
    prosba dalej aktualna.....
Tytuł: skrytp: usuwajacy wolne linie
Wiadomość wysłana przez: Paweł Smoliński w 2007-05-30, 21:45:11
>
 > tylko ze ta operacja Mosi byc wykonana wlasnie przez skrypt....
 > a nie pojedynczo komende....
 >      
 >     prosba dalej aktualna.....

skrypt.sh:
#!/bin/sh
egrep -v "^[[:blank:]]*$" $1 > $2

no i wykonujesz: skrypt.sh plik_wejsciowy plik_wyjsciowy

[Xavery] Uprasza się o nie podawanie gotowych rozwiązań na talerzu, zwłaszcza w sytuacji w której pytający miał przedstawiony sposób rozwiązania zadania (zapewne szkolnego) :)
Tytuł: Odp: skrytp: usuwajacy wolne linie
Wiadomość wysłana przez: Pawel Pik w 2015-08-10, 10:51:24
Komenda tr posiada przełącznik -s, który pozwala usunąć powtarzające się znaki. Linia pusta oznacza, że znak nowej linii występuje dwa razy z rzędu. Polecam zapoznać się z manualem!
Tytuł: Odp: skrytp: usuwajacy wolne linie
Wiadomość wysłana przez: LionNet w 2015-12-20, 11:16:54
sed'em też się da to zrobić:

sed '/^$/d' test > test2

a jeśli mają być usunięte linie z samymi pustymi znakami to:

sed '/^\s*$/d' test > test2