[grep] Wyciąganie ciągu z ciągu

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
neonek911
Piegowaty Guziec
Piegowaty Guziec
Posty: 14
Rejestracja: 22 lis 2008, 19:13
Płeć: Mężczyzna
Wersja Ubuntu: 8.10
Środowisko graficzne: GNOME

[grep] Wyciąganie ciągu z ciągu

Post autor: neonek911 »

Witam!
Ja to chyba na prawdę jestem taki niekumaty. Próbuję wyciągnąć za pomocą grepa ciąg z ciągu, konkretnie includy z plików. Wg mnie powinno to tak wyglądać tak:

Kod: Zaznacz cały

grep '[^#include.?.][[:alnum:]][^.?]' plik
ale chyba coś pokręciłem, bo herezje mi wychodzą (prawie wszystkie linie printuje. Prosiłbym o jakiś działający kod do wyciągania tych includów (nazw). Z takiego oto ciągu: #include <plik> lub #include "plik" powinno wyjść samo plik.

Pozdrawiam,
neonek911
Awatar użytkownika
dk75
Przebojowy Jelonek
Przebojowy Jelonek
Posty: 1142
Rejestracja: 07 mar 2007, 22:59
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: [grep] Wyciąganie ciągu z ciągu

Post autor: dk75 »

grep wyciąga tylko całe linie

Kod: Zaznacz cały

awk '/^#include/ {$tmp=$2; gsub("[\"<>]", "", $tmp); print $tmp}' plik.c
Linux Mint Debian Edition x86_64/2.6.39, Conky 1.8.0, Xorg 7.6/1.10.4 - GNOME 2.30.2, nVidia 285.03
Lenovo T61p, HITACHI HTS722010K9SA00 100GB, ST9250827AS 250GB
http://linuxcounter.net/user/483055.html
neonek911
Piegowaty Guziec
Piegowaty Guziec
Posty: 14
Rejestracja: 22 lis 2008, 19:13
Płeć: Mężczyzna
Wersja Ubuntu: 8.10
Środowisko graficzne: GNOME

Odp: [grep] Wyciąganie ciągu z ciągu

Post autor: neonek911 »

@dk75
Teraz to mi tylko puste linie wypisuje ;/ Chyba zostanie mi tylko grepnięcie całych linii i cut. A może jakieś inne polecenie, nie musi być standardowe shella. Może być np. perl, python.
Awatar użytkownika
thalcave
Przyjaciel
Przyjaciel
Posty: 821
Rejestracja: 08 lis 2006, 12:17
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Fluxbox
Architektura: x86

Odp: [grep] Wyciąganie ciągu z ciągu

Post autor: thalcave »

Trochę zmodyfikowałem polecenie dk75:

Kod: Zaznacz cały

awk '/^#include/ {gsub("[\"<>]", "", $2); print $2}' plik.c
GNU/Linux user
Na pytania na PW/e-mail nie udzielam odpowiedzi!
Szanujmy innych użytkowników!
Wesprzyj akcje: Temat rozwiązany -> dodajemy [solved]
neonek911
Piegowaty Guziec
Piegowaty Guziec
Posty: 14
Rejestracja: 22 lis 2008, 19:13
Płeć: Mężczyzna
Wersja Ubuntu: 8.10
Środowisko graficzne: GNOME

Odp: [solved][grep] Wyciąganie ciągu z ciągu

Post autor: neonek911 »

Wielkie dzięki thalcave, o to mi chodziło :-D A i jeszcze jedno. Jak sprawdzić czy wyciągnięte pliki istnieją w aktualnym katalogu i podkatalogach ?
abc667
Piegowaty Guziec
Piegowaty Guziec
Posty: 29
Rejestracja: 28 lip 2009, 20:43
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: [grep] Wyciąganie ciągu z ciągu

Post autor: abc667 »

Awatar użytkownika
dk75
Przebojowy Jelonek
Przebojowy Jelonek
Posty: 1142
Rejestracja: 07 mar 2007, 22:59
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: [grep] Wyciąganie ciągu z ciągu

Post autor: dk75 »

thalcave pisze:Trochę zmodyfikowałem polecenie dk75:

Kod: Zaznacz cały

awk '/^#include/ {gsub("[\"<>]", "", $2); print $2}' plik.c
A znowu mi tak nie działało ;P i dlatego zrobiłem z przypisaniem do nowej zmiennej - pewnie zależy albo od shella albo od wersji AWK
Linux Mint Debian Edition x86_64/2.6.39, Conky 1.8.0, Xorg 7.6/1.10.4 - GNOME 2.30.2, nVidia 285.03
Lenovo T61p, HITACHI HTS722010K9SA00 100GB, ST9250827AS 250GB
http://linuxcounter.net/user/483055.html
Awatar użytkownika
k2cl
Przyjaciel
Przyjaciel
Posty: 3632
Rejestracja: 09 gru 2007, 12:48
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: LXDE
Architektura: x86

Odp: [grep] Wyciąganie ciągu z ciągu

Post autor: k2cl »

U mnie działają jakims cudem obydwa warianty :) Shell to bash 4.0.033, AWK - wersja 3.1.7

EDIT:
żeby być precyzyjnym i nie pozostawiać miejsca dla niedopowiedzeń - wspomniany awk to GAWK - pod Debianem mógłby to być również MAWK...
Work less, climb more :D
Awatar użytkownika
dk75
Przebojowy Jelonek
Przebojowy Jelonek
Posty: 1142
Rejestracja: 07 mar 2007, 22:59
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: [grep] Wyciąganie ciągu z ciągu

Post autor: dk75 »

bash - 3.2.39
awk - 3.1.6
Linux Mint Debian Edition x86_64/2.6.39, Conky 1.8.0, Xorg 7.6/1.10.4 - GNOME 2.30.2, nVidia 285.03
Lenovo T61p, HITACHI HTS722010K9SA00 100GB, ST9250827AS 250GB
http://linuxcounter.net/user/483055.html
Awatar użytkownika
thalcave
Przyjaciel
Przyjaciel
Posty: 821
Rejestracja: 08 lis 2006, 12:17
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Fluxbox
Architektura: x86

Odp: [grep] Wyciąganie ciągu z ciągu

Post autor: thalcave »

Kwestia paczki. k2cl na Archu używa awk z paczki gawk. Na Debianie miałem mawk, po zainstalowaniu gawk obie formułki zadziałały.
GNU/Linux user
Na pytania na PW/e-mail nie udzielam odpowiedzi!
Szanujmy innych użytkowników!
Wesprzyj akcje: Temat rozwiązany -> dodajemy [solved]
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Bing [Bot] i 4 gości