Отфильтруйте конкретные данные по уникальному шаблону в файле CSV и переместите эти данные в новый столбец в той же строке - PullRequest
0 голосов
/ 26 сентября 2018

Вот мои примеры данных в формате 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

enter image description here

Каждая строка содержит cs-categories="", как выделено, она имеет различные значения, такие как Technology/Internet, Non-Viewable/Infrastructure, Technology/Internet;Web Ads/Analytics, Web Ads/Analytics;Suspicious ... просто назвать несколько.

Моя цель - взять 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 и попытался выполнить то же самое, используя команду оболочки, например, уникальную строку grep, но в данный момент не очень хорошо работал.

Основная цель - получить метку времени, URL-адрес и категорию из этого журнала.

Если другое решение в сценарии Shell, Python или других проще, пожалуйста, дайте мне знать.

1 Ответ

0 голосов
/ 26 сентября 2018
 sed -r 's/^(\[[^\]*\]) (.* cs-categories=")([^"]*)(".*cs-host=)([^ ]*) /\1 \3 \5 \2\3\4\5 /'
 #           \1                  \2           \3          \4      \5
 #       Timestamp                        Categories             Host
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...