begin

awk命令简单实用

若如初见. 提交于 2019-12-30 18:56:21
把要分析的文件放到cywin 目录"home/{当前登录用户名}/" 下,这个好像是可以配置。 分析日志的页面访问,按次数排序,次数多的在最后 awk '{print $4}' click.log | sort | uniq -c| sort -n 所有文件被访问的次数. awk '{print $7}' access_log|sort |uniq -c|sort -nr 所有访问源IP的链接次数. awk '{print $1}' access_log | sort |uniq -c |sort -nr cat access_log.2007-01-19.log | awk -F" " '{print $1}' | sort |uniq -c | sort -rn awk -F" " '{print $1}' #用空格分隔,打印第一列数据 sort|uniq -c # 排序并过滤重复,-c 输出重复次数 sort –rn # 按-n数字进行-r反向排序 ----------------以下没实验过-可参考--------------------------------------------------------- ----------------------------------------------------------------------------------

awk命令详解

被刻印的时光 ゝ 提交于 2019-12-30 18:52:21
简单使用: awk :对于文件中一行行的独处来执行操作 。 awk -F : '{print $1,$4}' :使用‘:’来分割这一行,把这一行的第一第四个域打印出来 。 详细介绍: AWK 命令介绍 awk 语言的最基本功能是在文件或字符串中基于指定规则浏览和抽取信息 , awk 抽取信息后 , 才能进行其他文本操作 , 完整的 awk 脚本通常用来格式化文本文件中的信息 1. 调用 awk: 第一种命令行方式, 如 : awk [-Field-separator] 'commands' input-file(s) 这里 commands 是真正的 awk 命令 , [-F 域分隔符 ] 是可选的 , awk 默认使用空格分隔 , 因此如果要浏览域间有空格的文本 , 不必指定这个选项 , 但如果浏览如 passwd 文件 , 此文件各域使用冒号作为分隔符 , 则必须使用 -F 选项 : awk -F : 'commands' input-file 第二种 , 将所有 awk 命令插入一个文件 , 并使 awk 程序可执行 , 然后用 awk 命令解释器作为脚本的首行 , 以便通过键入脚本名称来调用它 第三种 , 将所有 awk 命令插入一个单独文件 , 然后调用,如 : awk -f awk-script-file input-file -f 选项指明在文件 awk-script

awk命令详解

自闭症网瘾萝莉.ら 提交于 2019-12-30 18:51:47
简单使用: awk :对于文件中一行行的独处来执行操作 。 awk -F :'{print $1,$4}' :使用‘:’来分割这一行,把这一行的第一第四个域打印出来 。 详细介绍: AWK 命令介绍 awk语言的最基本功能是在文件或字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作,完整的awk脚本通常用来格式化文本文件中的信息 1. 调用awk: 第一种命令行方式,如: awk [-Field-separator] 'commands' input-file(s) 这里commands是真正的awk命令,[-F域分隔符]是可选的,awk默认使用空格分隔,因此如果要浏览域间有空格的文本,不必指定这个选项,但如果浏览如passwd文件,此文件各域使用冒号作为分隔符,则必须使用-F选项: awk -F : 'commands' input-file 第二种,将所有awk命令插入一个文件,并使awk程序可执行,然后用awk命令解释器作为脚本的首行,以便通过键入脚本名称来调用它 第三种,将所有awk命令插入一个单独文件,然后调用,如: awk -f awk-script-file input-file -f选项指明在文件awk-script-file的awk脚本,input-file是使用awk进行浏览的文件名 2. awk脚本: awk脚本由各种操作和模式组成

awk

烂漫一生 提交于 2019-12-30 18:47:10
学习自https://www.cnblogs.com/jiqianqian/p/7944013.html https://www.cnblogs.com/276815076/p/6410179.html 感谢两位博主 一.awk命令简介 1.awk是一种编程语言,用于对文本和数据进行处理 2.具有强大的文本格式化能力 3.awk是逐行进行处理的 二.grep、sed、awk比较 1.grep更适合单纯的查找或匹配文本 2.sed更适合对匹配到的文本进行编辑 3.命令awk更适合文本格式化,对文本进行较复杂的格式处理 三.awk基本语法 awk [options] 'pattern{action}' file eg:vim test.txt ABC 123 Jack DEF 456 Alice GHI 789 Amy 1.在没有options和pattern的情况下 awk '{print}' test.txt//输出全文 awk '{print $2}' test.txt//输出第二列 awk '{print $2$1$3}' test.txt//调整第二列和第一列,并去掉中间的空格 awk '{print $1,$2+1,$3}' test.txt//输出全文,第二列做+1计算 2.pattern包括两种特殊模式,分别是BEGIN和END (1)BEGIN模式

noip模拟测试7

我的梦境 提交于 2019-12-30 04:39:26
T1:求方程ax+by=c的解的个数,若超过65535则输出ZenMeZheMeDuo   ( T<=10000 -1,000,000 <= a,b,c <= 1,000,000 )      这个形式? 一看不就是扩展欧几里得吗?   ——by 冯神   然而群我数论最菜......   这个形式?一看不就是特判水分加暴力吗?  ——by me   考场上一脸懵比,面向数据编程水了60分......      那说说正解,先想到exgcd,然后脑子……#@¥@&%¥%&%¥@#%……一通乱转,便有了算法雏形   exgcd求一般情况解 + 一大堆特判   先看一般情况:     我们可以用exgcd求出 ax + by = gcd(a,b) 的一组解,而且根据裴蜀定理可以知道,当且仅当 gcd(a,b) | c 时原方程有解     当有解时,再由exgcd的通解可以知道, 解的分布情况应该是一次函数上一些位于第一象限的离散整点,且每隔gcd(a,b)出现一次(如图)          位于一次函数上?那就好办了,只要找到第一象限内最高点和最低点就可以用差值除以gcd(a,b)计算出答案了   那特判的情况呢?     某大佬指出,a、b、c 三个数分别有正、零、负三种情况,只要分3 3 种情况讨论就好了     %¥&@%¥@#%&    

LIS与P1020 导弹拦截

本秂侑毒 提交于 2019-12-30 04:33:12
LIS:Longest Increasing Subsequence,最长递增子序列 话不多说,上题: P1020 导弹拦截: 传送门 PS:这是一道求最长递增子序列的题,但要注意,本题开启spj,n方100分,nlogn200分。 (很坑很坑) n方做法,代码如下: # include <bits/stdc++.h> using namespace std ; int a [ 100005 ] ; int dp1 [ 100005 ] ; int dp2 [ 100005 ] ; int main ( ) { int n = 0 ; while ( cin >> a [ n ++ ] ) ; n -- ; fill ( dp1 , dp1 + n , 1 ) ; fill ( dp2 , dp2 + n , 1 ) ; for ( int i = 0 ; i < n ; ++ i ) { for ( int j = 0 ; j <= i - 1 ; ++ j ) { if ( a [ i ] > a [ j ] ) dp1 [ i ] = max ( dp1 [ i ] , dp1 [ j ] + 1 ) ; else dp2 [ i ] = max ( dp2 [ i ] , dp2 [ j ] + 1 ) ; } } cout << * max_element ( dp2 ,

mysql自定函数

不想你离开。 提交于 2019-12-30 00:09:22
一、基本语法   delimiter 自定义符号   -- 如果函数体只有一条语句, begin和end可以省略, 同时delimiter也可以省略   create function 函数名(形参列表) returns 返回类型   -- 注意是retruns   begin     函数体    -- 函数内定义的变量如:set @x = 1; 变量x为全局变量,在函数外面也可以使用     返回值   end   自定义符号   delimiter ; 二、示例 -- 自定义函数 delimiter $$ create function myfun3(ia int, ib int) returns int begin return ia + ib; end $$ delimiter ; 三、查看函数   1. show function status [like 'pattern'];  -- 查看所有自定义函数, 自定义函数只能在本数据库使用。   2. show create function 函数名;  -- 查看函数创建语句 四、删除函数   drop function 函数名; 五、综合应用 1. 使用全局变量 -- 计算1 ~ 指定数据之间的和 delimiter $$ create function my_sum(x int) returns int begin

Sqlite事物与锁

坚强是说给别人听的谎言 提交于 2019-12-29 02:58:07
1事务 事务定义了一组SQL命令的边界,这组命令或者作为一个整体被全部执行,或者都不执行。事务的典型实例是转帐。 2事务的范围 事务由3个命令控制:BEGIN、COMMIT和ROLLBACK。BEGIN开始一个事务,之后的所有操作都可以取消。COMMIT使BEGIN后的所有命令得到确认;而ROLLBACK还原BEGIN之后的所有操作。如: sqlite> BEGIN; sqlite> DELETE FROM foods; sqlite> ROLLBACK; sqlite> SELECT COUNT(*) FROM foods; 上面开始了一个事务,先删除了foods表的所有行,但是又用ROLLBACK进行了回卷。再执行SELECT时发现表中没发生任何改变。 SQLite默认情况下,每条SQL语句自成事务(自动提交模式)。 3冲突解决 违反约束会导致事务的非法结束。大多数数据库(管理系统)都是简单地将前面所做的修改全部取消。 SQLite有其独特的方法来处理约束违反(或说从约束违反中恢复),被称为冲突解决。如: sqlite> UPDATE foods SET id=800-id; SQL error: PRIMARY KEY must be unique SQLite提供5种冲突解决方案:REPLACE、IGNORE、FAIL、ABORT和ROLLBACK。 REPLACE:

MySQL存储过程的创建及调用

≯℡__Kan透↙ 提交于 2019-12-28 19:55:24
阅读目录: MySQL存储过程_创建-调用-参数 存储过程:SQL中的“脚本”     1. 创建存储过程     2. 调用存储过程     3. 存储过程体     4. 语句块标签 存储过程的参数     1. in :向过程里传参     2. out :过程向外传参值     3. inout :in and out # SQL语句:先编译后执行 存储过程(Stored Procedure):   一组可编程的函数,是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。 优点 ( 为什么要用存储过程? ):   ①将重复性很高的一些操作,封装到一个存储过程中,简化了对这些SQL的调用   ②批量处理:SQL+循环,减少流量,也就是 “跑批”   ③ 统一接口 ,确保数据的安全 相对于oracle数据库来说,MySQL的存储过程相对功能较弱,使用较少。 一、存储过程的创建和调用   >存储过程就是具有名字的一段代码,用来完成一个特定的功能。   >创建的存储过程保存在数据库的数据字典中。 1、创建存储过程 CREATE [DEFINER = { user | CURRENT_USER }]  PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic

VECTOR

走远了吗. 提交于 2019-12-27 09:10:07
vector::erase():从指定容器删除指定位置的元素或某段范围内的元素 vector::erase()方法有两种重载形式 如下: 1、iterator erase(iterator _Where); v1.erase( v1.begin( ) );//删除v1中的第一个元素 vec.erase(vec.begin()+2);删除第3个元素 2、iterator erase(iterator _First,iterator _Last); //删除v1.begin() + 1和v1.begin() + 2两个元素 v1.erase(v1.begin() + 1, v1.begin() + 3); vec.erase(vec.begin()+i,vec.begin()+j);删除区间[i,j-1];区间从0开始 插入元素:vec.insert(vec.begin()+i,a);在第i+1个元素前面插入a; 如果是删除指定位置的元素时: 返回值是一个迭代器,指向删除元素下一个元素;如果是删除某范围内的元素时:返回值也表示一个迭代器,指向最后一个删除元素的下一个元素; 来源: https://www.cnblogs.com/zzqc/p/12105518.html