PDA

Показать полную графическую версию : Преобразование вывода лог файла


egoryich
02-04-2014, 18:23
Добрый день,

подскажите пожалуйста как преобразовать вывод лог файла из вида
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
Немного "похулиганил", не став использовать "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
Georgio,
подскажи как сделать чтоб данные брались из файла txt и записывались в новый? данные построчно

Georgio
02-04-2014, 23:38
egoryich, подскажу, но только не раньше, чем через час.

egoryich
02-04-2014, 23:44
Georgio,
спасибо, буду ждать, попробую сам добавить на твоем примере (http://forum.oszone.net/post-2327474-2.html)

Georgio
03-04-2014, 05:25
@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
Georgio,
не срабатывает скрипт, не пойму что с ним(

Georgio
03-04-2014, 12:02
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
Georgio,

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




© OSzone.net 2001-2012