awk

awk命令学习

心已入冬 提交于 2020-03-14 13:01:38
本文 主要通过awk的一些应用实例,来帮助我们理解awk的相关语法。 1、awk介绍 awk是一种强大的 文本分析工具 。awk本身就是linux下的一个工具,既可以单独使用,也可以嵌入到bash中。 awk语言的最基本功能是在文件或字符串中基于指定规则浏览和 抽取信息 。awk抽取信息后,才能进行其他文本操作。 2、awk应用实例 我们处理的是如下的示例信息 [root@iZ2ze7aznw5uolxelrna1gZ software]# cat netstat.txt Proto Recv-Q Send-Q Local-Address Foreign-Address State tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN tcp 0 0 coolshell.cn:80 124.205.5.146:18245 TIME_WAIT tcp 0 0 coolshell.cn:80 61.140.101.185:37538 FIN_WAIT2 tcp 0 0 coolshell.cn:80 110.194.134.189:1032 ESTABLISHED tcp 0 0 coolshell.cn:80

AWK“煎蛋”教程

孤街浪徒 提交于 2020-03-14 13:00:20
只想达到两个目的: 1)熟悉awk。 2)临近双十一值夜班打发时间。 开始   从netstat命令中提取了如下信息作为用例 [root@appstockworker tmp]# netstat >>netstat.txt [root@appstockworker tmp]# cat netstat.txt Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 appStockWorker.soa.360b:ssh 10.13.133.61:20799 ESTABLISHED tcp 0 0 appStockWorker.soa.360:http 192.168.195.187:42687 TIME_WAIT tcp 0 0 appStockWorker.soa.360:http 192.168.195.187:42661 TIME_WAIT tcp 0 0 appStockWorker.soa.360b:ssh 10.13.133.61:53685 ESTABLISHED tcp 0 52 appStockWorker.soa.360b:ssh 10.13.184.67:60857 ESTABLISHED tcp 0 0

awk打印指定列以后的所有内容

淺唱寂寞╮ 提交于 2020-03-14 11:34:46
(1) 使用awk将文件的前12列替换为空 awk '{for(i=1;i<=12;i++)$i="";print $0}' localhost_access_log //写法一 awk '{for(i=1;i<=12;i++){$i=""};print $0}' localhost_access_log //写法二 awk '{for(i=13;i<=NF;i++)printf $i" ";printf "\n"}' localhost_access_log //写法三 (2)去除开头的空格 sed 's/^ *//' 5201351.txt //这样只能匹配空格开头 sed 's/^\s*//' 5201351.txt //也可以这样写,除了空格还可以匹配制表符 sed 's/^[[:space:]]*//' 5201351.txt //也可以这样写,除了空格还可以匹配制表符sed 's/ \+//g' 5201351.txt // 来源: https://www.cnblogs.com/jjzd/p/6397064.html

awk处理文件内容格式

荒凉一梦 提交于 2020-03-14 11:34:19
今天运营出了点问题,需要对特定时间段充值数做一个处理,文件格式有特定要求,要符合erlang的格式 {roleID,gold}. mysql导出所有数据 结果如下【取部分数据看】: =================================== kuwo 4 50004106230500 100 kuwo 4 50004106230900 10 agent server role_id **** uu178 5 380005100002500 300 agent server role_id **** uu178 6 380006100000600 200 uu178 6 380006100110500 20 agent server role_id **** yy365 1 860001100008000 2000 yy365 1 860001100008100 1900 。 。 。 =================================== 首先去掉表头信息: cat log.txt | grep -v agent kuwo 4 50004104005100 50 kuwo 4 50004104284100 1000 kuwo 4 50004105824300 1000 kuwo 4 50004106230500 100 kuwo 4

转 shell awk 使用详解

此生再无相见时 提交于 2020-03-14 11:30:32
awk简介 awk: 中文意思是报告生成器 能够根据我们输入的信息,将信息格式化以后显示,将定义好的信息以比较美观(直观)的方式显示出来出现比较早,继而出现了new awk(nawk)在windows上实现,gawk, awk实现在linux上。awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk的处理文本和数据的方式是这样的,它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作。如果没有指定处理动作,则把匹配的行显示到标准输出(屏幕),如果没有指定模式,则所有被操作所指定的行都被处理。awk分别代表其作者姓氏的第一个字母,分别是Alfred Aho、Brian Kernighan、Peter Weinberger。gawk是awk的GNU版本,它提供 了Bell实验室和GNU的一些扩展。下面就对awk进行介绍。 awk使用的基本格式: 1 2 3 # awk [options] 'script' file1 file2, ... # awk [options] 'PATTERN { action }' file1 file2, ..

AWK 简明教程

大憨熊 提交于 2020-03-14 11:28:59
有一些网友看了前两天的《 Linux下应该知道的技巧 》希望我能教教他们用awk和sed,所以,出现了这篇文章。我估计这些80后的年轻朋友可能对awk/sed这类上古神器有点陌生了,所以需要我这个老家伙来炒炒冷饭。 况且,AWK是贝尔实验室1977年搞出来的文本出现神器,今年是蛇年,是AWK的本命年,而且年纪和我相仿,所以非常有必要为他写篇文章 。 之所以叫AWK是因为其取了三位创始人 Alfred Aho , Peter Weinberger , 和 Brian Kernighan 的Family Name的首字符。要学AWK,就得提一提AWK的一本相当经典的书《 The AWK Programming Language 》,它在 豆瓣上的评分 是9.4分!在 亚马逊上居然卖1022.30元 。 我在这里的教程并不想面面俱到,本文和我之前的 Go语言简介 一样,全是示例,基本无废话。 我只想达到两个目的: 1)你可以在乘坐公交地铁上下班,或是在坐马桶拉大便时读完(保证是一泡大便的工夫)。 2)我只想让这篇博文像一个火辣的脱衣舞女挑起你的兴趣,然后还要你自己去下工夫去撸。 废话少说,我们开始脱吧(注:这里只是topless)。 起步上台 我从netstat命令中提取了如下信息作为用例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

awk命令

柔情痞子 提交于 2020-03-14 10:09:29
语法: awk [options] 'Pattern{Action}' file 选项: -F  指定分隔符 -v  设置变量值, 变量: 内置变量: FS  输入字段分隔符, 默认为空白字符 OFS  输出字段分隔符, 默认为空白字符 RS  输入记录分隔符(输入换行符), 指定输入时的换行符 ORS  输出记录分隔符(输出换行符),输出时用指定符号代替换行符 NF  number of Field,当前行有多少列,字段数量 NR  number of ROW,行号,当前处理的文本行的行号。 FNR  当awk处理多个文件时,分别对每个文件的行数进行计数 FILENAME  当前文件名 ARGC  命令行参数的个数 ARGV  表示的是一个数组,这个数组中保存的是命令行所给定的参数,awk规定,'pattern{ action }'并不被看做是参数,awk被看做为参数。 举例: 1、AWK 包含两种特殊的模式:BEGIN 和 END。 BEGIN 模式指定了处理文本之前需要执行的操作: END 模式指定了处理完所有行之后所需要执行的操作: [root@localhost] ~$ awk 'BEGIN{print "aaa","bbb"} {print $1,$2} END{print "ccc","ddd"}' t aaa bbb a b h i o p r s u v ccc

How to print out the last patterns range using awk?

隐身守侯 提交于 2020-03-14 05:00:28
问题 My file is like this: /begin pattern/ first match /end pattern/ other text /begin pattern/ second match /end pattern/ other text /begin pattern/ This is the one I want to print out /end pattern/ other text How can I print out the last match using awk? I just know about how to print out all these matches. 回答1: awk 'END { print r } /end pattern/ { f = x } /begin pattern/ { f = 1; r = x } f++ > 1 { r = r ? r RS $0 : $0 } ' infile 回答2: Depending on if you want the lines containing the delimiters

How to print out the last patterns range using awk?

这一生的挚爱 提交于 2020-03-14 04:56:07
问题 My file is like this: /begin pattern/ first match /end pattern/ other text /begin pattern/ second match /end pattern/ other text /begin pattern/ This is the one I want to print out /end pattern/ other text How can I print out the last match using awk? I just know about how to print out all these matches. 回答1: awk 'END { print r } /end pattern/ { f = x } /begin pattern/ { f = 1; r = x } f++ > 1 { r = r ? r RS $0 : $0 } ' infile 回答2: Depending on if you want the lines containing the delimiters

Shell脚本之awk详解

三世轮回 提交于 2020-03-13 14:08:18
一.基本介绍 1.awk: awk是一个强大的文本分析工具,在对文本文件的处理以及生成报表,awk是无可替代的。awk认为文本文件都是结构化的,它将每一个输入行定义为一个记录,行中的每个字符串定义为一个域(段),域和域之间使用分割符分割。 2.功能:流控制、数学运算、进程控制、内置的变量和函数、循环和判断 3.工作原理: awk 会把每行进行一个拆分,用相应的命令对拆分出来的“段”进行处理。 (1)行工作模式,读入文件的每一行,会把一行的内容,存到$0里 (2)使用内置的变量FS(段的分隔符,默认用的是空白字符),分割这一行,把分割出来的每个段存到相应的变量$(1-100) (3)输出的时候按照内置变量OFS(out FS),输出 (4)读入下一行继续操作 简单实例 [root@tx3 ~]# echo "this is a book" > awk.txt [root@tx3 ~]# awk '{print $2,$1,$3,$4}' awk.txt is this a book 4. Awk常用内置变量表: 1 $0 当前记录(作为单个变量) 2 $1~$n 当前记录的第n个字段,字段间由FS分隔 3 FS 输入字段分隔符 默认是空格 4 NF 当前记录中的字段个数,就是有多少列 5 NR 已经读出的记录数,就是行号,从1开始 6 RS 输入的记录他隔符默 认为换行符 7 OFS