这是我的问题:
A)我是一个脚本新手
B)我有一个文件,我需要将数据分成CSV样式表,我的问题是有三个数据区域(见下文):
(Area 1, not relevant) Total IPv4 packets captured: 2245686
# L4 Protocol # Packets Relative Frequency[%] Protocol description
1 5602 0.249456 Internet Control Message Protocol
.... (more data here)
(Area 2, relevant) Total TCP packets: 2238186
# Port # Packets Relative Frequency[%] Protocol description
22 2138555 95.548583 The Secure Shell (SSH) Protocol
.... (more data here)
(Area 3, relevant) Total UDP packets: 1623
# Port # Packets Relative Frequency[%] Protocol description
.... (more data here)
(Area 4, relevant) Total SCP packets: 0
# Port # Packets Relative Frequency[%] Protocol description
.... (more data here)
(这是Tranalyzer _protocols输出)
所以我需要做的是使输出看起来像:
# Port,# Packets,Relative Frequency[%],Protocol description
22,2138555,95.548583,The Secure Shell (SSH) Protocol,(more data...)
但我还需要从每个区域获取数据并将其放在单独的CSV文件(TCP,UDP,SCP)中,以便我放入表中的所有流(每个流在不同子目录中的不同_protocols文件中)数据可以进入这三个文件中的一个并构建一个破坏内存的电子表格(因此为什么是CSV。)
我也完全乐于用任何其他方式表达任何人都可以提出的建议。
非常感谢!
答案 0 :(得分:1)
以下命令将数据文件提取并转换为csv
将x
更改为TCP,UDP或SCP以提取特定数据集
执行前将<analyzer_output.txt>
更改为正确的文件名。
x="SCP"; \
cat <analyzer_output.txt> | sed "1,/^Total $x/d; /^Total /,\$d; /^\s*$/d" | \
sed 's/\([0-9]\)\s\+\([0-9]\)/\1,\2/g; s/\([0-9]\)\s\+\([A-Za-z]\)/\1,\2/g' \
> $x.csv
生成SCP.csv文件以获取以下样本数据
41,2138555,95.548583,The Secure Shell (SSH) Protocol
42,2138555,95.548583,The Secure Shell (SSH) Protocol
示例数据文件
Total IPv4 packets captured: 2245686
1 5602 0.249456 Internet Control Message Protocol
2 5602 0.249456 Internet Control Message Protocol
Total TCP packets: 2238186
21 2138555 95.548583 The Secure Shell (SSH) Protocol
22 2138555 95.548583 The Secure Shell (SSH) Protocol
Total UDP packets: 1623
31 2138555 95.548583 The Secure Shell (SSH) Protocol
32 2138555 95.548583 The Secure Shell (SSH) Protocol
Total SCP packets: 0
41 2138555 95.548583 The Secure Shell (SSH) Protocol
42 2138555 95.548583 The Secure Shell (SSH) Protocol