LINUX.ORG.RU

razbor teksta 2


0

0

Sorry za ruglish, no predydushij vopros gde vozilsja z www.translit.ru byl udalen vidimo iz-za ne ochen' vezhlivogo slova "za#$ah", a sil vozitsja s nim opjat' netu. :(

Chasto stalkivajus s odnoj i toj ze problemoj, prichem AWK ne ochen udoben dla ee reshenija (nuzno rukami ustanavlivat' FS, RS i t.p.)

Zadacha:

Est' tekst:

text text smth1 text text whatever text text smth2 text .....

Hotelos' by imet' takoj tool chtoby po napisaniu:

tool -s "text smth[1-9]+ text"

libo chego-to podobnogo i skarmlivaniju etogo teksta poluchit' na vychode stroki:

text smth1 text
text smth2 text

V ideale hotelos by voobshe umet' vydirat' peremennyje w kakom-nibut' takom stile:

tool -s "text smth&p=[1-9]+ text"

naprimer. I chtoby eto kudalos kuda-to (kuda ugodno) kak uzhe vydernutje znaczenija peremennych.

No podoszel by i prosto output (jesli maska i tekst eto pozvoljajut) v vide strok vsech nahozhdenij regexp'a. Chital man k grep'u vrode ne umejet. AWK zadachu reshajet, no eto ze nieudobno dla takoj prostoj zadachi stol'ko vozitsja. :(

Neuzeli netu w Linux takoj tulzy?

anonymous
Ответ на: комментарий от cvv

Пришел домой, тут русский есть. А как им это сделать? Пока я делал только:

cat whatever | sed 's/what/to_what/g'.

Попробовал:

cat whatever | sed '/mask/p'

да делает какую-то ерунду.

anonymous
()
Ответ на: комментарий от anonymous

Прочитал man sed, info sed и облегчение все не приходит. ;)

Простейшая же задача:

$ cat whatever
$ text dupa1 text dupa2 text
$ text dupa3

$ cat whatever | ну_чем_же??? -x "dupa[1-9]+"
$ dupa1
$ dupa2
$ dupa3

А ни одна тулза без ручного затраха с разделителями и т.п. не умеет. :\

dissident ★★
()
Ответ на: комментарий от dissident

Прошу прощения ;)

Re: razbor teksta 2 Прочитал man sed, info sed и облегчение все не приходит. ;)

Простейшая же задача:

$ cat whatever $ text dupa1 text dupa2 text $ text dupa3

$ cat whatever | ну_чем_же??? -x "dupa[1-9]+" $ dupa1 $ dupa2 $ dupa3

А ни одна тулза без ручного за#$ха с разделителями и т.п. не умеет. :\

;)

dissident ★★
()
Ответ на: комментарий от dissident

ты это, используй preformatted text когда═постишь, а то нифига непонятно

dilmah ★★★★★
()

$sed 's/text text \(smth[1-9]\+\)/text \1 text/' <<EOF
text text smth1
text text whatever
text text smth2
EOF
text smth1 text
text text whatever
text smth2 text
$

или не оно????

cvv ★★★★★
()
Ответ на: комментарий от cvv

Sorry vse ruki nie dojdut wpisat' w XF86Config-4 'ru' na rabote.

Pochti ono! Pohoze ostalos' najti kak delat' "nie regexp" w sed.

dd4muf@zoo:~/ggggg$ cat text | sed 's/.*\(!dd[1-9]\+\).*/z/g'
text dd1 text dd2 text
text dd3
dd4
muf@zoo:~/ggggg$ cat text | sed 's/.*\(dd[1-9]\+\).*/\1/g'
dd2
dd3
dd4

Pochti to chto nuzno!

Jesli by jeshe mozna bylo kak-nibud' tak:

cat text | sed 's/ !dd[1-9]\+ \(dd[1-9]\+\) !dd[1-9]\+ / \1 /g'

(probely wstawil dla bolshej chitabelnosci).

Mozno? W info sed nashel tol'ko [^smth] no eto ne sovsem to. S '!' tozhe ne ochen' to. No put' vrode pravilnyj, spasibo za ideju!

dissident ★★
()
Ответ на: комментарий от dissident

Pardon:

=== Cut ===
muf@zoo:~/ggggg$ cat text
text dd1 text dd2 text
text dd3
dd4
muf@zoo:~/ggggg$ cat text | sed 's/.*\(dd[1-9]\+\).*/\1/g'
dd2
dd3
dd4
=== Cut ===

Sorry za bug'i ja tut beginner. ;)

dissident ★★
()
Ответ на: комментарий от dissident

Уффффф!

muf@przestrz37-1:~/zz$ cat text
text dd1 text dd2 text dd3
dd4
muf@przestrz37-1:~/zz$ cat text | sed 's/\(dd[1-9]\+\)/~\1~/g' | tr "~" "\n" | grep "dd[1-9]\+"
dd1
dd2
dd3
dd4

Thnx за подсказки!

PS Чорная магия ;)

PPS Кажется я начинаю понимать за что многие не любят линукс ;)

dissident ★★
()
Ответ на: комментарий от dissident

я думаю что немного попрактиковавшись вы упростите ваше заклинание вполовину причём оно не будет содержать ни tr ни grep.

PS:после того как научишся колдовать тебя никакой силой не перетащиш в виндузу. иначе все юниксоиды давно б слиняли.

cvv ★★★★★
()
Ответ на: комментарий от cvv

PS2:тяжело в учении - легко в бою (c)Суворов

cvv ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.