Strona 1 z 1

Wyciąganie fragmentu zdania/kodu z pliku i zapis do nowego pliku

: 21 października 2012, 22:26
autor: Shaken
Witam serdecznie.
Szukam funkcji w bashu, która pozwoli mi na wycięcie fragmentu kodu/zdania z całego pliku i
zapisze ten fragment do nowego pliku.

Dla przykładu, chcę aby ze zdania:

Kod: Zaznacz cały

Ala ma kota.
wyciągnąć: i zapisać do pliku wycinek.php

Albo z kodu:

Kod: Zaznacz cały

<b>Pogrubienie</b>
wyciągnąć:

Kod: Zaznacz cały

Pogrubienie
i zapisać do pliku wycinek.php

Funkcją grep wyszukuję sobie odpowiednią linię. Teraz tylko problem jak ją "obciąć". Samo zapisywanie lub tworzenie i uruchamianie skryptu mam opanowane.

Chodzi mi głównie o odczyt tych danych.

Z góry dziękuję za wskazówki i wszelką pomoc.
Pozdrawiam

: 22 października 2012, 08:46
autor: LordRuthwen
Ale na jakiej zasadzie chcesz to wyciągać? Jaki jest wzór?
Zawsze n wyraz czy co?

: 22 października 2012, 12:41
autor: kodama
Jak pisze kolega wyżej - wybór narzędzia, którym byś mógł to zrobić zależy w sumie w dużej mierze od tego co chcesz wyciąć.
http://unixhelp.ed.ac.uk/CGI/man-cgi?sed
http://unixhelp.ed.ac.uk/CGI/man-cgi?awk

: 23 października 2012, 13:50
autor: Maxman
Możesz też użyć:

Kod: Zaznacz cały

awk '{print $1}'

: 23 października 2012, 20:07
autor: Shaken
To może inaczej, chciałbym wyciąć fragment tekstu znajdujący się pomiędzy znakiem > a znakiem < i zapisać go do pliku np. wycinek.php.
W tekście pojawiają się litery, cyfry i znaki typu ,. (przecinek, kropka) a także polskie znaki (ą,ę,ś,ó,ł...).

: 23 października 2012, 21:50
autor: kodama
To tutaj polecam się zapoznać dla przykładu -> http://debian.linux.pl/threads/27610-Za ... post152942 polecenie sed, które wyciąga adres ip po ciągu DST. Wystarczy zmodyfikować wzór i będzie działać.

: 26 października 2012, 20:25
autor: lessmian2
Możesz to zrobić min. za pomocą narzędzi: cut, grep, sed, awk, perl, i pewnie masą innych. Najlepiej gdybyś wybrał jedno (wydaje mi się, że do tego najlepiej nada się sed, lub jeśli zadanie jest bardziej skomplikowane - perl) i zapoznał się z wyrażeniami regularnymi.

Kod: Zaznacz cały

echo '<b>Pogrubienie</b>' | sed 's/.*>\(.*\)<.*/\1/'
Pogrubienie
echo '<b>Pogrubienie</b>' | perl -lne '/>(\w+)</; print $1'
Pogrubienie