sscanf解析符合一定模式的字符串或者文件内容

 1     char * pszLog = "192.168.110.98 - - 1264348800 \"GET http://www.xxxxxxx.cc/web/validate/captcha.php?cid=134&3307 HTTP/1.0\" 404 534 \"-\" \"Trend Micro WTP Add-On 1.2.1046\" TCP_MISS:FIRST_UP_PARENT 13";
 2
 3     char szIP[16] = {0};
 4     char szTime[16] = {0};
 5     char szURL[256] = {0};
 6     char szCmd[8]   = {0};
 7     int  nStatus;
 8     int  nCode;
 9     char szProfile[64] = {0};
10     char szProtocol[64] = {0};
11     int  nRetCode;
12     char szBuf[32] = {0};
13     sscanf(pszLog, "%s - - %s %*[\"]%s %1000[^\"]\" %d %d %*[\"]%1000[^\"]\" %*[\"]%1000[^\"]\" %s %d\n",
14                     szIP, szTime, szCmd, szURL, &nStatus, &nCode, szProfile, szProtocol, szBuf, &nRetCode);
15
16     printf("szIP:[%s]\n", szIP);
17     printf("szTime:[%s]\n", szTime);
18     printf("szCmd:[%s]\n", szCmd);
19     printf("szURL:[%s]\n", szURL);
20     printf("nStatus:[%d]\n", nStatus);
21     printf("nCode:[%d]\n", nCode);
22     printf("szProfile:[%s]\n", szProfile);
23     printf("szProtocol:[%s]\n", szProtocol);
24     printf("nRetCode:[%d]\n", nRetCode);
25     printf("szBuf:[%s]\n", szBuf);

说明:第一个格式 %s,将提取串中的IP地址第二个格式 - - ,将跳过/匹配串中的“ - - ”第三个格式 %*[\"],将跳过一个引号“"”第四个格式 %s, 将提出串中的GET第五个格式 %1000[^\"]\",将提取1000个字符(包含空格)直到引号“"”,但是不包含引号,否则sccanf遇到空格停止提取第六个格式:%d第七个格式:%d,这个两个格式将提取串中的数字第八个格式:%*[\"],将跳过引号第九个格式:%1000[^\"]\",将提取串中的"-"符号,然后跳过引号第十个格式:%*[\"],将跳过引号第十一个格式:%1000[^\"]\",将提出串中的profile第十二个格式:%s,将提取最后一个串第十三个格式:%d,将提取最后一个数字

2. 解析无线路由器信息,AP名字中包含空格

//bc:05:43:ea:fa:5b       2412    -49     [WPA2-PSK-CCMP][WPS][ESS]       TPLINK 7270

格式串:"%s %*d %d %s %64[^\n]"第一个格式:%s,将提取BSSID值第二个格式:%*d,将跳过带宽值,2.4G第三个格式:%d,将提取信号值第四个格式:%s,将提取安全认证信息第五个格式:%64[^\n],将提取路由器的名称直到遇到换行符号。

3. 解析特定格式串

ssid="TEST_AP"
/* %*[^=], skip "ssid"
   * =\"   , skip "=\""
   * %[^\"], get the remain string except the quota.
*/
格式串 "%*[^=]=\"%[^\"]"第一个格式串:%*[^=],将跳过ssid第二个格式串:=\",将匹配串中的等号和左引号第三个格式串:%[^"],将匹配TEST_AP这个名字
时间: 2024-11-01 20:37:58

sscanf解析符合一定模式的字符串或者文件内容的相关文章

同事总结的hivesql优化Hive是将符合SQL语法的字符串解析生成可以在Hadoop上执行的M

同事总结的hive sql 优化 Hive是将符合SQL语法的字符串解析生成可以在Hadoop上执行的MapReduce的工具. 使用Hive尽量按照分布式计算的一些特点来设计sql,和传统关系型数据库有区别, 所以需要去掉原有关系型数据库下开发的一些固有思维. 基本原则: 1:尽量尽早地过滤数据,减少每个阶段的数据量,对于分区表要加分区,同时只选择需要使用到的字段 select ... from A join B on A.key = B.key where A.userid>10 and B

由XML解析学习工厂模式

代码段1: startupData = new StartupData(); /* 设定自定义的MyHandler给XMLReader */ StartupXMLHandler startupDataXMLHandler = new StartupXMLHandler(); startupDataXMLHandler.setData(startupData); /* 产生SAXParser对象 */            SAXParserFactory spf = SAXParserFacto

用C#通过正则表达式截取字符串中符合条件的子字符串

仅仅作为简单的记录,不多说直接上代码(仅测试使用): private void Test() { Regex ConnoteA = new Regex("^[a-zA-Z]\\d{8}$"); Regex ConnoteAA = new Regex("^[a-zA-Z]{2}\\d{7,10}$"); Regex ConnoteAAA = new Regex("^[a-zA-Z]{3}\\d{5,9}$"); Regex ConnoteAAAA

正则表达式match和group的区别 具有相同模式的字符串使用组的提取案例

Match类 示例:查找出字符串中包含的url string text = "FirstUrl: http://www.sohu.com ,SecondUrl: http://www.baidu.com "; string pattern = @"\b(\S+)://(\S+)\b"; //匹配URL的模式 MatchCollection mc = Regex.Matches(text, pattern); //满足pattern的匹配集合 Console.Writ

具有相同模式的字符串,使用正则表达式组的提取和替换的案例

对具有相同模式的字符串内不同的组的提取怎样做呢,我是这样做的: 提取字符串:sourcetext:{name:john,data:[1,2,3],name:marry,data:[4,5,6]} 代码: Regex reg = new Regex(@"data:\[([\w|.|,]{1,})\]", RegexOptions.IgnoreCase); MatchCollection matches = reg.Matches(series); foreach (Match match

正则表达式用来根据某种匹配模式寻找字符串中的某些单词。

我们可以把这个正则表达式分成几段: / 是这个正则表达式的头部 the 是我们想要匹配的模式 / 是这个正则表达式的尾部 g 代表着 global(全局),意味着返回所有的匹配而不仅仅是第一个. i 代表着忽略大小写,意思是当我们寻找匹配的字符串的时候忽略掉字母的大小写. 例子:用全局.忽略大小写的模式选取字符串 testString中所有的单词 and

解决AES算法CBC模式加密字符串后再解密出现乱码问题

问题 在使用 AES CBC 模式加密字符串后,再进行解密,解密得到的字符串出现乱码情况,通常都是前几十个字节乱码: 复现 因为是使用部门 cgi?AESEncryptUtil 库,找到问题后,在这里复现不太方便,这里使用 python 进行复现,可以方便复现. #!/usr/bin/env python #coding=utf-8 from Crypto.Cipher import AES ? PADDING = '\0' if __name__ == "__main__":? ?

深入学习python解析并读取PDF文件内容的方法

这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应用.主要参考了一些已有的博客内容,代码. 主要思路是首先利用一个做项目的形式,描述所做的问题,运行环境,和需要安装的库,然后写代码,此代码是在python2.7中运行,然后写出在python3.6中运行的代码,并详细解释python2.7和python3.6中python库的一些不同之处,最后详细的

Java解析文件内容

本文主要实现对.chk文件的解析,将其内容读出来,存入到一个Map中,文件内容实例为: A0500220140828.CHK A05002 |34622511 |373532879 |3 识别分隔符|,代码如下所示: 1 package com.src.factory; 2 3 import java.io.BufferedReader; 4 import java.io.File; 5 import java.io.FileReader; 6 import java.io.IOExceptio