我在我的日志文件中有几个字段, 我用以下脚本将它们转换为 CSV 。
#!/bin/bash
INPUT=/home/MSC11/khanm/wwwp11dorganiser.co.uk_log
OUTPUT="/home/MSC11/khanm/output-$(basename $INPUT | cut -d . -f1).csv"
# field names
s=1
ip=
dt=
method=
target=
protocol=
statuscode=
reference=
echo -n "Processing..."
# empty output file
>$OUTPUT
# read input line by line
while IFS= read -r line
do
# get data
ip=$(cut -d" " -f1<<<"$line")
dt=$(cut -d" " -f4<<<"$line")
method=$(cut -d" " -f6<<<"$line")
target=$(cut -d" " -f7<<<"$line")
protocol=$(cut -d" " -f8<<<"$line")
statuscode=$(cut -d" " -f9<<<"$line")
reference=$(cut -d" " -f11<<<"$line")
# write cvs formatted output
echo "${s},${ip},${dt},${target},${method},${protocol},${statuscode},${reference}" >>$OUTPUT
# update counter
s=$(( ++s ))
done < "$INPUT"
echo "done."
echo "Total ${s} line processed and wrote to $OUTPUT cvs file."
变量“ dt” 是格式 29/ Nov/ 2007: 20: 42: 09 。 我想将其分为两个。 一个是格式 29/ Nov/ 2007 的日期, 第二个是格式 20: 42: 09 的日期。 我绕着剪切命令工作, 但我无法做到这一点。 感谢您的帮助 。