细说awk

细说awk

awk是一个处理文本的编程语言工具,能用简短的程序处理标准输入或文件、数据排序、计算以及生成报表等。

awk的基本语法:

awk option ‘pattern {action}’ file

awk选项

-f program-file    //从文件中读取awk程序源文件
-F fs                   //指定fs为输入字段分隔符
-v var=value      //变量赋值
--posix              //兼容POSIX正则表达式
--dump-variables=[file]    //把awk命令时的全局变量写入文件,默认文件是awkvars.out
--profile=[file]     //格式化awk语句到文件,默认是awkprof.out

awk模式

BENG{}              //给程序赋予初始状态,先执行的工作
END{}                //程序结束之后执行的一些结尾工作
/reqular expression/     //为每个输入记录匹配正则表达式
pattern && pattern       //逻辑and,满足两个模式
pattern || pattern          //逻辑or,满足其中一个模式
! pattern                      //逻辑not,不满足模式
pattern1,pattern2     //连续范围匹配

示例:
1)从文件读取awk程序处理文件

echo ‘{print $1}‘ > test.awk
tail -3 /etc/services |awk -f test.awk  //以下是过渡出的内容
iqobject
iqobject
matahari

2)指定输入分隔符,指定多个分隔符

tail -2 /etc/passwd|awk ‘BEGIN{FS=":"}{print $1}‘
tail -2 /etc/passwd|awk -F: -f test.awk
a="ass;gg#sow;p#slolow;wpw#pp"
echo $a|awk -F‘[;#]+‘ ‘{print $3}‘   //以下是显示的内容
sow

3)变量赋值

awk -v a=$a ‘BEGIN{print a}‘  //引用系统变量
ass;gg#sow;p#slolow;wpw#pp

awk ‘BEGIN{print ‘$a‘}‘   //会报语法错误,是因为变量里含有特殊符号 

a=123
awk ‘BEGIN{print ‘$a‘}‘
123
awk -v a=linux ‘BEGIN{print a}‘
linux

原文地址:http://blog.51cto.com/13480443/2088360

时间: 2024-10-08 04:01:12

细说awk的相关文章

精通awk系列(14):细说awk中的变量和变量赋值

回到: Linux系列文章 Shell系列文章 Awk系列文章 awk变量 awk的变量是动态变量,在使用时声明. 所以awk变量有3种状态: 未声明状态:称为untyped类型 引用过但未赋值状态:unassigned类型 已赋值状态 引用未赋值的变量,其默认初始值为空字符串或数值0. 在awk中未声明的变量称为untyped,声明了但未赋值(只要引用了就声明了)的变量其类型为unassigned. gawk 4.2版提供了typeof()函数,可以测试变量的数据类型,包括测试变量是否声明.

awk(一)基础篇

上一篇总结了下sed的用法,这一篇玩玩sed的好基友awk,学完它俩,以后就再也不用怕处理文本文件了. awk其实和sed处理过程差不多,都是面向字符流的.sed和awk都相当于是一个加工厂,输入的文本行,相当于原材料,原材料在工厂中经过一系列处理.然后输出成品. awk和sed不同的是,awk更加的强大了,基本上可以说大多数sed能够实现的功能,awk都可以实现.... 但是实现相同的功能,大多情况下sed的过程更加的简洁吧. 当然awk还有着更多的功能,awk本身就是一门类C的语言了,有变量

学习笔记之awk用法

           文本处理三剑客之awk 1. 首先简要总结一些文本处理三剑客: grep族:文本过滤工具 sed:行编辑工具 2. 下面就来看看awk是什么? awk现在linux上用的是GNU awk即gawk ,现在centos系统上awk是gawk的一个符号链接文件.那么awk究竟在centos系统上是用来做什么的呢?awk就是一个报告生成器,格式化文本输出的工具. 3. 学习awk对有什么帮助呢? 学习awk我们可以轻松的对我们想要处理的文本进行查看等,方便我们解决问题. 4. g

新awk整理

总感觉上一篇awk的总结几乎是照着man翻译过来的,惨不忍睹 无意间在互联网上有找到了宝贵的资料 感觉整理的很好,想着照着这个来重新写下,对照新的man更新下吧,只是总是在改变的 一.awk简介二.awk工作流程三.awk程序结构四.awk基本语法 awk命令行模式 awk程序文件 awk标准选项五.awk内置变量 标准awk变量 awk特定变量(即专有变量)六.awk操作符 算数运算符 关系运算符 逻辑运算符 三元运算符 一元运算符 字符串连接操作符(即空格符) 数组成员操作符(in) 正则表

linux提取指定列字符并打印所有内容(awk)

假设有文件长如下样子: CHROM  POS     ID      REF     ALT     QUAL    FILTER  INFO    FORMAT  samplename 1 3552841 . G . 32.995 . DP=1;MQ0F=0;AF1=0;AC1=0;DP4=1,0,0,0;MQ=40;FQ=-29.9912 GT:PL:DP 0/0:0:1 1 3552842 . T . 32.995 . DP=1;MQ0F=0;AF1=0;AC1=0;DP4=1,0,0,0

shell之awk

简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行读入,以空格为默认分割符将每行切片,切开的部分再进行各种分析处理. 使用方法: awk [option] 'pattern1{action1}pattern2{action2}' {filenames} 尽管操作可能会很复杂,但语法总是这样,其中pattern表示awk在数据中查找的内容,而action是在找到匹配内容时所执行的一系列命令. awk

awk中使用shell变量

其实在awk里,是不能直接使用shell变量的 方法是:awk -v 选项让awk 里使用shell变量 TIME=60 awk -v time="$TIME" 'BEGIN{FS="|"} {if ($7>time) print $2 }' 这样要注意:在awk里,time不能加$符号. 网上说如下方法都可行: 一:"'$var'" 这种写法大家无需改变用'括起awk程序的习惯,是老外常用的写法.如: var="test&quo

awk 字符串处理函数

awk提供了许多强大的字符串函数,见下表:awk内置字符串函数gsub(r,s)    在整个$0中用s替代rgsub(r,s,t)    在整个t中用s替代rindex(s,t)    返回s中字符串t的第一位置length(s)    返回s长度match(s,r)    测试s是否包含匹配r的字符串split(s,a,fs)    在fs上将s分成序列asprint(fmt,exp)    返回经fmt格式化后的expsub(r,s)    用$0中最左边最长的子串代替ssubstr(s,

awk

cat 1.txt 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 行转列: awk '{for(i=1;i<=NF;i++)printf("%s\n",$i)};{printf "\n"}' 1.txt 显示如下: 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9