Strona 1 z 1

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

: 23 wrz 2009, 22:33
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

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

: 23 wrz 2009, 23:10
autor: dk75
grep wyciąga tylko całe linie

Kod: Zaznacz cały

awk '/^#include/ {$tmp=$2; gsub("[\"<>]", "", $tmp); print $tmp}' plik.c

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

: 23 wrz 2009, 23:16
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.

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

: 23 wrz 2009, 23:31
autor: thalcave
Trochę zmodyfikowałem polecenie dk75:

Kod: Zaznacz cały

awk '/^#include/ {gsub("[\"<>]", "", $2); print $2}' plik.c

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

: 24 wrz 2009, 10:27
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 ?

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

: 24 wrz 2009, 12:53
autor: abc667

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

: 24 wrz 2009, 19:00
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

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

: 24 wrz 2009, 19:24
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...

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

: 24 wrz 2009, 19:38
autor: dk75
bash - 3.2.39
awk - 3.1.6

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

: 24 wrz 2009, 19:42
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.