标签: parsing

如何从 Unix 中的文件中删除空行/空白行(包括空格)?

如何使用命令行在 Unix/Linux 中的文件中删除空/空白(仅包括空格)行?

file.txt 的内容

Line:Text
1:<blank>
2:AAA
3:<blank>
4:BBB
5:<blank>
6:<space><space><space>CCC
7:<space><space>
8:DDD
Run Code Online (Sandbox Code Playgroud)

期望输出

1:AAA
2:BBB
3:<space><space><space>CCC
4:DDD
Run Code Online (Sandbox Code Playgroud)

linux unix command-line-interface text parsing

109
推荐指数
6
解决办法
36万
查看次数

如何通过看起来像文本的二进制文件进行 grep?

我有应该是文本的二进制文件(它们是导出的日志),但我无法用 less 打开它(它看起来很丑 - 它看起来像一个二进制文件)。我发现我可以用 vi 打开它,我可以 cat 它(你会看到实际的日志),但我真正想做的是通过它们 grep(不必用 vi 打开每一个然后执行搜索)。有没有办法让我做到这一点?

text grep parsing binary

76
推荐指数
4
解决办法
23万
查看次数

你有任何有用的 awk 和 grep 脚本来解析 apache 日志吗?

我可以使用日志分析器,但通常我需要解析最近的网络日志以查看当前发生的情况。

我有时会做一些事情,比如找出请求某个文件的前 10 个 ip

cat foo.log | grep request_to_file_foo | awk '{print $1}' |  sort -n | uniq -c | sort -rn | head
Run Code Online (Sandbox Code Playgroud)

你的工具箱里有什么?

grep logging parsing awk apache-2.2

72
推荐指数
5
解决办法
14万
查看次数

从 nginx 日志中获取用户代理列表

我有 nginx 日志文件,我想找出每个主要浏览器版本的市场份额。我对次要版本和操作系统不感兴趣。我想得到这样的东西:

100 IE6
 99 IE7
 20 IE8
200 FF2
300 FF3
Run Code Online (Sandbox Code Playgroud)

我知道如何从文件中获取用户代理列表,但我想汇总列表以仅查看浏览器的主要版本。有没有工具可以做到?

nginx log-files logging parsing

7
推荐指数
2
解决办法
2万
查看次数

带分隔符的可解析 NGINX 访问日志文件

默认的 NGINX 格式是这样的:

log_format combined '$remote_addr - $remote_user [$time_local]  '
                '"$request" $status $body_bytes_sent '
                '"$http_referer" "$http_user_agent"';
Run Code Online (Sandbox Code Playgroud)

这有点难以解析。我担心人们会注入"请求、引荐来源或用户代理。

我考虑过使用分隔符,并使用我自己的格式,|P-,|用作分隔符:

log_format parsable '$status |P-,| $time_iso8601 |P-,| $http_host 
|P-,| $bytes_sent |P-,| $http_user_agent |P-,| $http_referer 
|P-,| $request_time |P-,| $request';
Run Code Online (Sandbox Code Playgroud)

但是,没有什么可以阻止用户注入|P-,|他们的请求、引荐来源或用户代理。

我读了这篇关于 ASCII 分隔文本的文章:https : //ronaldduncan.wordpress.com/2009/10/31/text-file-formats-ascii-delimited-text-not-csv-or-tab-delimited-text/

我认为这可以用来解决这个问题,但用户也可以将 ASCII 分隔符注入他们的数据中。

是否有解决此问题的最佳实践方法?

nginx logging format parsing

7
推荐指数
1
解决办法
5300
查看次数

从脚本中的 JOINS 发现预期的外键

我正在继承一个有 400 个表和仅注册 150 个外键约束的数据库。知道我对应用程序做了什么并查看了表格列,很容易说应该还有更多。

如果我开始添加丢失的 FK,我担心当前的应用程序软件会崩溃,因为开发人员可能已经开始依赖这种“自由”,但是解决问题的第一步是提出丢失的 FK 的列表,因此我们可以作为一个团队来评估他们。

更糟糕的是,引用列不共享命名约定。

这些关系被非正式地编码到数百个即席查询和存储过程中,所以我希望以编程方式解析这些文件,以寻找实际表(但不是表变量等)之间的联接。

我在这种方法中预见的挑战是:换行符、可选别名和表提示、别名解析。

  • 有什么更好的想法吗?(除了放弃)
  • 是否有任何预先构建的工具可以解决这个问题?
  • 我不认为正则表达式可以处理这个。你不同意吗?
  • SQL 解析器?我尝试使用 Microsoft.SqlServer.Management.SqlParser.Parser 但暴露的只是词法分析器 - 无法从中获得 AST - 所有这些都是内部的。

parsing sql-server-2005 foreign-key

5
推荐指数
1
解决办法
132
查看次数

如何有效地处理来自 cron 的许多日常电子邮件?

每台新服务器至少每天都会收到一封 crontab 电子邮件。FreeBSD 服务器甚至发送两个:每日和安全运行输出。由于我对虚拟化的痴迷,我需要阅读(然后经常丢弃而不采取进一步行动)的电子邮件数量变得太多了。

有什么方法可以管理/自动化这个过程?电子邮件可以被基于网络的东西取代吗?你们中的一些人肯定已经为此找到了创造性的方法。

automation email parsing cron

4
推荐指数
1
解决办法
103
查看次数

AWS - 创建 EC2 快照并自动重命名它们的脚本

我目前正在尝试设置一个脚本(使用来自 Ubuntu 服务器的 AWS CLI),它将执行以下操作:

  • 创建每个现有卷的快照。这些卷已经有一个 NAME 标签(如 SERVER1、SERVER1DATA、SERVER2、SERVER2DATA 等)。

  • 重命名那些使用相同标签 NAMES 拍摄的快照(这样,在 AWS 控制台上,我可以按日期过滤它们并能够轻松识别它们)。

自动重命名是我在这里的主要问题。

我一直在玩弄 ec2-describe-volumes 、 ec2-create-snapshot 和 ec2addtag 命令,但我的脚本不是那么好。到目前为止,我已经能够通过创建一个带有 VOLUME NAME 和 NAME TAG 的列表来设置它(这些参数然后由 ec2addtag 获取),但是每次我在环境中添加或删除卷时,我都必须手动更新该列表.

任何帮助将不胜感激。

rename parsing amazon-ec2 amazon-web-services

4
推荐指数
1
解决办法
1万
查看次数

如何限制 whois 命令的输出?

如何从 PTR whois 查找中仅获取所有者/组织名称?我不需要所有其他的东西,只需要关于所有权的部分(在这种情况下是谷歌)。

Edit /usr/bin/whois 74.125.236.52 或任何 ip get OrgName

  #
  # Query terms are ambiguous.  The query is assumed to be:
  #     "n 74.125.236.52"
  #
  # Use "?" to get help.
  #

  #
  # The following results may also be obtained via:
  # http://whois.arin.net/rest/nets;q=74.125.236.52?showDetails=true&showARIN=false&ext=netref2
  #

  NetRange:       74.125.0.0 - 74.125.255.255
  CIDR:           74.125.0.0/16
  OriginAS:
  NetName:        GOOGLE
  NetHandle:      NET-74-125-0-0-1
  Parent:         NET-74-0-0-0-0
  NetType:        Direct Allocation
  RegDate:        2007-03-13
  Updated:        2012-02-24
  Ref:            http://whois.arin.net/rest/net/NET-74-125-0-0-1


  OrgName:        Google Inc.
  OrgId:          GOGL
  Address:        1600 Amphitheatre Parkway
  City:           Mountain …
Run Code Online (Sandbox Code Playgroud)

parsing whois

3
推荐指数
1
解决办法
8455
查看次数

如果给定“.log”文件,有没有办法确定日志格式?

如果我没有关于日志类型(例如 syslog、apache 日志、IIS 日志)的先验信息,有没有办法确定日志的类型(以便可以正确解析)?我正在尝试为日志编写 Grok 过滤器,但我不知道这些字段代表什么。

这些是日志中的前几行:

14;1074585600;147.33.10.112;89ccfad2c4bbc02c91ed66055a235fca;/ls/index.php?      &id=62&view=1,2,3,4,6,9&sort=,13,4&pozice=40;hXXX://YYY.shop4.cz/ls/index.php?&id=62&view=1,2,3,4,6,9&sort=,13,4&pozice=20

12;1074585600;57.66.66.138;17bff4c98f96413dbe748c9cd8822da9;/ct/?c=158;hXXX://YYY.shop3.cz

14;1074585600;194.196.100.86;e9455a109435408eb7b8e170d636d024;/klient/seznam.php;hXXX://YYY.shop4.cz/klient/zpravy.php

11;1074585600;66.77.73.176;88dc79e8eb5968d936a7d563af55bd08;/dt/?id=9354;

10;1074585601;158.196.177.79;cbf84093e4740423436abaf3c1a65ebc;/;
Run Code Online (Sandbox Code Playgroud)

analysis logging format parsing

3
推荐指数
1
解决办法
338
查看次数

如何解析电子邮件以获取电子邮件的原始收件人?

我有电子邮件源,想要解析电子邮件的原始收件人。

假设“user1@example.com”正在接收电子邮件,但在“收件人”列表 user1@example.com 中,提到了 user2@example.com 和 user3@example.com。我只想从电子邮件源中获取 user1。

在初步分析中,来自 mdeamon 服务器的电子邮件包含“X-MDaemon-Deliver-To:”标签。类似地,来自 Devcot 邮件服务器的电子邮件包含“Delivered-To:”。但没有获得通用解析逻辑来获取原始电子邮件收件人。

如何解析电子邮件以获取电子邮件的原始收件人?

email linux pop3 parsing parse-server

0
推荐指数
1
解决办法
552
查看次数