这是我的 csv 格式的示例数据。实际数据远不止这个。
这是基于文本的数据,以便您可以自己尝试。
Ms Excel 上的实际数据(csv/xlsx 格式)可以在下面的屏幕截图中看到。
[24/09/2018:22:41:49 GMT] "PROXY_SERVER_BA2" c-ip=x.x.x.x cs-bytes=1198 cs-categories="Technology/Internet" cs-host=shavar.services.mozilla.com cs-ip=y.y.y.y cs-method=CONNECT cs-uri-path=/ cs-uri-port=443 cs-uri-scheme=tcp cs-User-Agent="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0" cs-username=johndoe dnslookup-time=0 duration=60 rs-status=0 s-action=TCP_TUNNELED
[24/09/2018:17:45:44 GMT] "PROXY_SERVER_AA2" c-ip=x.x.x.x cs-bytes=152450 cs-categories="Business/Economy" cs-host=cvshipping.ups.com cs-ip=z.z.z.z cs-method=CONNECT cs-uri-path=/ cs-uri-port=443 cs-uri-scheme=tcp cs-User-Agent="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0" cs-username=johndoe dnslookup-time=0 duration=268 rs-status=0 s-action=TCP_TUNNELED
[24/09/2018:17:44:03 GMT] "PROXY_SERVER_AA2" c-ip=x.x.x.x cs-bytes=1795 cs-categories="Software Downloads" cs-host=blocklist.addons.mozilla.org cs-ip=z.z.z.z cs-method=CONNECT cs-uri-path=/ cs-uri-port=443 cs-uri-scheme=tcp cs-User-Agent="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0" cs-username=johndoe dnslookup-time=0 duration=61 rs-status=0 s-action=TCP_TUNNELED
[24/09/2018:17:41:44 GMT] "PROXY_SERVER_AA2" c-ip=x.x.x.x cs-bytes=3882 cs-categories="Web Ads/Analytics" cs-host=cebwa.d2.sc.omtrdc.net cs-ip=z.z.z.z cs-method=CONNECT cs-uri-path=/ cs-uri-port=443 cs-uri-scheme=tcp cs-User-Agent="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0" cs-username=johndoe dnslookup-time=0 duration=35 rs-status=0 s-action=TCP_TUNNELED
[20/09/2018:15:48:50 GMT] "PROXY_SERVER_AA2" c-ip=a.a.a.a cs-auth-group=Domain%20Users cs-bytes=227 cs-categories="Web Ads/Analytics;Suspicious" cs-host=data35.adlooxtracking.com cs-ip=b.b.b.b cs-method=CONNECT cs-uri-path=/ cs-uri-port=443 cs-uri-scheme=tcp cs-User-Agent="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:60.0) Gecko/20100101 Firefox/60.0" cs-username=johndoe duration=0 rs-status=0 s-action=TCP_TUNNELED
[20/09/2018:15:48:35 GMT] "PROXY_SERVER_AA2" c-ip=a.a.a.a cs-auth-group=Domain%20Users cs-bytes=3201 cs-categories="Search Engines/Portals" cs-host=www.google.com cs-ip=b.b.b.b cs-method=CONNECT cs-uri-path=/ cs-uri-port=443 cs-uri-scheme=tcp cs-User-Agent="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:60.0) Gecko/20100101 Firefox/60.0" cs-username=johndoe dnslookup-time=0 duration=117 rs-status=0 s-action=TCP_TUNNELED
每一行都包含 cs-categories=""
,正如突出显示的那样,它具有不同的值,例如技术/互联网
、不可查看/基础设施
、技术/互联网;网络广告/分析
、网络广告/分析;可疑
...仅举几例。
我的目标是获取 cs-categories=""
及其值并将其放入同一行/行的另一列中。
这很棘手,因为 cs-categories=""
位于数据中间,并且值各不相同。
例如:
cs-categories="Technology/Internet"
cs-categories="Non-Viewable/Infrastructure"
cs-categories="Technology/Internet;Web Ads/Analytics"
cs-categories="Web Ads/Analytics;Suspicious"
我还尝试过在 Linux 中移动这些数据,并尝试使用 shell 命令(例如 grep unique string)完成相同的操作,但目前效果不佳。
主要目标是从此日志中获取时间戳、URL 和类别。
如果 Shell 脚本、Python 或其他脚本中的其他解决方案更简单,也请告诉我。
最佳答案
sed -r 's/^(\[[^\]*\]) (.* cs-categories=")([^"]*)(".*cs-host=)([^ ]*) /\1 \3 \5 \2\3\4\5 /'
# \1 \2 \3 \4 \5
# Timestamp Categories Host
关于excel - 使用 CSV 文件中的唯一模式过滤特定数据,并将该数据移动到同一行的新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52513616/