Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Преобразование вывода лог файла (http://forum.oszone.net/showthread.php?t=280225)

egoryich 02-04-2014 18:23 2332155

Преобразование вывода лог файла
 
Добрый день,

подскажите пожалуйста как преобразовать вывод лог файла из вида
Код:

2014-04-02 11:46:43,89.255.92.27:38649    ,ip
в такой вид
Код:

89.255.92.27:38649 - - [12/Mar/2014:07:01:47 +0400] "ip"

Georgio 02-04-2014 22:57 2332331

Немного "похулиганил", не став использовать "for /f":

Код:

@echo off
setlocal enabledelayedexpansion
set "string=2014-04-02 11:46:43,89.255.92.27:38649    ,ip"
for %%i in (
 "01=Jan" "02=Feb" "03=Mar" "04=Apr" "05=May" "06=Jun"
 "07=Jul" "08=Aug" "09=Sep" "10=Oct" "11=Nov" "12=Dec"
) do set %%i
for /l %%i in (1 1 6) do (
 set n=
 for %%j in (%string:-= %) do (
  set /a n+=1
  if %%i==1 if !n!==5 <nul set /p="%%j - - ["
  if %%i==2 if !n!==3 <nul set /p="%%j/"
  if %%i==3 if !n!==2 <nul set /p="!%%j!/"
  if %%i==4 if !n!==1 <nul set /p="%%j:"
  if %%i==5 if !n!==4 <nul set /p="%%j +0400] "
  if %%i==6 if !n!==6 <nul set /p=""%%j""
 )
)
echo.
pause>nul
endlocal
exit /b

.

egoryich 02-04-2014 23:29 2332350

Georgio,
подскажи как сделать чтоб данные брались из файла txt и записывались в новый? данные построчно

Georgio 02-04-2014 23:38 2332357

egoryich, подскажу, но только не раньше, чем через час.

egoryich 02-04-2014 23:44 2332359

Georgio,
спасибо, буду ждать, попробую сам добавить на твоем примере

Georgio 03-04-2014 05:25 2332401

Код:

@echo off
setlocal enabledelayedexpansion
for %%i in (
 Jan Feb Mar Apr May Jun
 Jul Aug Sep Oct Nov Dec
) do (
 set /a n+=1
 set month=0!n!
 set month=!month:~-2!
 set !month!=%%i
)
(
for /f "usebackq tokens=1-5 delims=-, " %%i in (
 "log.txt"
) do (
 echo %%m - - [%%k/!%%j!/%%i:%%l +0400] "ip"
)>"log_new.txt"
endlocal
exit /b


egoryich 03-04-2014 09:43 2332448

Georgio,
не срабатывает скрипт, не пойму что с ним(

Georgio 03-04-2014 12:02 2332487

egoryich, извини! Скобка "соскочила".

Код:

@echo off
setlocal enabledelayedexpansion
for %%i in (
 Jan Feb Mar Apr May Jun
 Jul Aug Sep Oct Nov Dec
) do (
 set /a n+=1
 set month=0!n!
 set month=!month:~-2!
 set !month!=%%i
)
(
for /f "usebackq tokens=1-5 delims=-, " %%i in (
 "log.txt"
) do (
 echo %%m - - [%%k/!%%j!/%%i:%%l +0400] "ip"
)
)>"log_new.txt"
endlocal
exit /b


egoryich 15-05-2014 13:07 2351734

Georgio,

привет, можешь исправить скрипт так, чтобы после скобок с датой, выводился ip:port как есть
пример - 2014-04-27 10:47:30,80.82.78.105:34766 ,192.168.1.1:53


Время: 20:11.

Время: 20:11.
© OSzone.net 2001-