Автор Тема: [SOLVED] Малко помощ за sed  (Прочетена 2522 пъти)

Zeroadhesion

  • Напреднали
  • *****
  • Публикации: 74
  • Distribution: Arch Linux
  • Window Manager: LXDE
    • Профил
[SOLVED] Малко помощ за sed
« -: May 19, 2013, 15:37 »
Имам един файл, който се променя през определено време:

Цитат
Currently: Partly Sunny: 29C
c
5/19/2013 Forecast
High: 29 C Low: 11 C Mostly sunny
b
5/20/2013 Forecast
High: 28 C Low: 11 C Partly sunny
c

Искам sed да го чете и да показва като output само това в червеното:

Цитат
Currently: Partly Sunny: 29C
c
5/19/2013 Forecast
High: 29 C Low: 11 C Mostly sunny
b
5/20/2013 Forecast
High: 28 C Low: 11 C Partly sunny
c

"Currently" е винаги там и не се променя, дължината от символи на очертаното в червено се променя, а C винаги е накрая на първи ред. Благодаря!

« Последна редакция: May 19, 2013, 16:23 от Zeroadhesion »
Активен

radoulov

  • Напреднали
  • *****
  • Публикации: 116
    • Профил
Re: Малко помощ за sed
« Отговор #1 -: May 19, 2013, 15:50 »
Код
GeSHi (Bash):
  1. sed 's/Currently: *\(.*\)C$/\1/;q' infile
Активен

Zeroadhesion

  • Напреднали
  • *****
  • Публикации: 74
  • Distribution: Arch Linux
  • Window Manager: LXDE
    • Профил
Re: Малко помощ за sed
« Отговор #2 -: May 19, 2013, 15:54 »
Мерси за бързият отговор, но това само отряза първия ред:

Активен

radoulov

  • Напреднали
  • *****
  • Публикации: 116
    • Профил
Re: Малко помощ за sed
« Отговор #3 -: May 19, 2013, 16:07 »
Би ли post-нал output-а от:


Код:
od -bc weather | head
Активен

Zeroadhesion

  • Напреднали
  • *****
  • Публикации: 74
  • Distribution: Arch Linux
  • Window Manager: LXDE
    • Профил
Re: Малко помощ за sed
« Отговор #4 -: May 19, 2013, 16:14 »
Ето го :)

Код:
0000000 103 165 162 162 145 156 164 154 171 072 040 120 141 162 164 154
          C   u   r   r   e   n   t   l   y   :       P   a   r   t   l
0000020 171 040 123 165 156 156 171 072 040 063 060 103 040 012 143 012
          y       S   u   n   n   y   :       3   0   C      \n   c  \n
0000040 065 057 061 071 057 062 060 061 063 040 106 157 162 145 143 141
          5   /   1   9   /   2   0   1   3       F   o   r   e   c   a
0000060 163 164 012 110 151 147 150 072 040 063 060 040 103 040 114 157
          s   t  \n   H   i   g   h   :       3   0       C       L   o
0000100 167 072 040 061 061 040 103 040 115 157 163 164 154 171 040 163
          w   :       1   1       C       M   o   s   t   l   y       s
Активен

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: Малко помощ за sed
« Отговор #5 -: May 19, 2013, 16:16 »
Има един излишен $ в командата от radoulov. Трябва да е
Код
GeSHi (Bash):
  1. sed 's/Currently: *\(.*\)C/\1/;q' infile
а може да махнем и първата звездичка
Код
GeSHi (Bash):
  1. sed 's/Currently: \(.*\)C/\1/;q' infile
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

Zeroadhesion

  • Напреднали
  • *****
  • Публикации: 74
  • Distribution: Arch Linux
  • Window Manager: LXDE
    • Профил
Re: Малко помощ за sed
« Отговор #6 -: May 19, 2013, 16:23 »
Е благодаря много! И с двете команди става  [_]3 [_]3 [_]3 [_]3
Активен

radoulov

  • Напреднали
  • *****
  • Публикации: 116
    • Профил
Re: [SOLVED] Малко помощ за sed
« Отговор #7 -: May 19, 2013, 16:27 »
Ако искаш да премахнеш тhe trailing space:

Код:
s/Currently: *\(.*\)C $/\1/;q
Активен

Zeroadhesion

  • Напреднали
  • *****
  • Публикации: 74
  • Distribution: Arch Linux
  • Window Manager: LXDE
    • Профил
Re: [SOLVED] Малко помощ за sed
« Отговор #8 -: May 19, 2013, 16:29 »
Ако искаш да премахнеш тhe trailing space:

Код:
s/Currently: *\(.*\)C $/\1/;q
Идеално, мерси!
Активен