2012-03-19 3 views
0

Этот код:Alter вывод сценария

wget --output-document=- http://runescape.com/title.ws 2>/dev/null \ 
| grep PlayerCount \ 
| head -1l \ 
| sed 's/^[^>]*>//' \ 
| sed "s/currently.*$/$(date '+%r %b %d %Y')/" \ 
| cut -d">" -f 3,4 \ 
| sed 's/<\/span>//' 

выводит что-то подобное:

112,915 people 10:44:54 PM Mar 18 2012 

Может кто-нибудь помочь мне сделать так, чтобы эта программа выдавала выглядеть следующим образом:

3/18/2012 22:44:54 112,915 people 

Спасибо!

+1

не нужно использовать символ продолжения строки, если строка заканчивается с трубой символ. Есть выбор стиля, и хороший аргумент может быть сделан, чтобы поместить символ трубы в начале строки легче читать, но это стоит отметить. –

ответ

2

Вы должны сделать вашу команду следующим образом:

wget --output-document=- http://runescape.com/title.ws 2>/dev/null \ 
| grep PlayerCount \ 
| head -1l \ 
| sed 's/^[^>]*>//' \ 
| sed "s/currently.*$/$(date '+%m\/%d\/%Y %H:%m:%S')/" \ 
| cut -d">" -f 3,4 \ 
| sed 's/<\/span>//' \ 
| awk '{print $3, $4, $1, $2}' 
+1

Эй, у вас есть Sed и Awk вместе в одном конвейере. Неплохо! И вы никогда не прибегаете к чему-то тяжелому, как Perl. – thb

+0

Это сработало хорошо, спасибо. – Aaron

2

Частичный ответ:

date '+%m/%d/%Y %H:%m:%S' 

дает формат даты вы хотите, за исключением того, что в марте сделан «03», а не «3». Если вы действительно хотите быть марта 3, то это работает:

date '+%m/%d/%Y %H:%m:%S' | sed -e 's/^0//' 

И, если вы хотите сделать 9 марта в 3/9, а не 03/09, ну, вы можете воспользоваться Sed в любой из нескольких способов , но это один так же просто, как и любой:

date '+%m/%d/%Y %H:%m:%S' | sed -e 's/^0//' | sed -e 's/^\([[:digit:]]\+\/\)0/\1/' 
Смежные вопросы