
awk
xuejinliang
这个作者很懒,什么都没留下…
展开
-
awk匹配不区分大小写问题
awk匹配不区分大小写问题在文本中匹配,只含有大写字母或者是小写字母的行然后进行输出的时候awk ‘/[a-z]/{print 1}’ file发现不仅小写的字母进行了输出,然而含有大写字母的行也进行了显示后来进过查阅资料发现,这是Linux系统编码的问题因为Linux的编码是utf8的话,a-z代表的是a A b B ……z Z这时候需要把编码变为C的话 a-z表示的就会原创 2017-03-29 14:13:03 · 5791 阅读 · 0 评论 -
awk文件比较条件输出
file1chr2 intron 25 30 - mchr2 intron 46 71 - mchr2 intron 79 90 - m原创 2016-09-01 14:42:44 · 1744 阅读 · 0 评论 -
awk函数介绍
awk提供了很多的函数提供给我们使用,现在简单的介绍几个内置函数。1、splitsplit函数是用来将一个字符串进行划分为数组的函数:split(“string”,”arrar_name”,”separator”)其中第一个参数为划分的字符串或者是变量,即我们想把那个变量变为数组,第二个参数就是我们想进行划分的数组的名字是什么,这个根据自己的需求进行定义,最后就是在划分的过程中的分原创 2016-08-22 15:03:22 · 613 阅读 · 0 评论 -
awk对行字段进行分割处理
文件如下a b c 1.2.3.4,5.6.7.8b b c 2.3.4.5c b c 2.3.4.5,6.7.8.9d b c 3.4.5.6请问如何变成a b c 1.2.3.4a b c 5.6.7.8b b c 2.3.4.5c b c 2.3.4.5c b c 6.7.8.9d b c 3.4.5.6处理:awk ‘{l=split($原创 2016-08-31 18:04:37 · 6444 阅读 · 0 评论 -
awk行赋值处理
有文件如:/vol/VSM_VM_A1_root/ 972 0 97251 1 50 2%/vol/VSM_VM_A1_root_ls/ 972 0 97251 1 50 2%/vol/sas_vm_a1/ 9961472 1833235 8128236/vol/nfs_182_248_53_219/ 204800 295 204504 0%想处理为:当$1为数原创 2016-08-31 15:46:57 · 2562 阅读 · 0 评论 -
awk输出基数和偶数
awk可以进行基数和偶数的输出,下面介绍两种方法实现。seq 10 | awk ‘{if($0%2==0)print $0}’ ------>进行偶数的输出seq 10 | awk ‘{if($0%2==1)print $0}’ ------>进行奇数的输出上面实现的方式是比较传统的方式,利用和2进行取余的方法进行的输出。seq 10 | awk ‘i=!i’ ------->进行原创 2016-08-19 17:52:04 · 1370 阅读 · 0 评论 -
awk处理筛选内容
我们NIS服务器上很多帐号无效之后只删除了passwd文件里的帐号名,group文件没有修改,导致现在很多不存在的ID在group里面加入了很多组。现在要把这些无效ID从group文件移除,请问有什么好办法 举例:passwd:aaa:59029:59029::/local/aaa:/bin/bashbbb:59030:59030::/local/bbb:/bin/bash原创 2016-08-30 11:24:00 · 712 阅读 · 0 评论 -
指定行合并为一行
file1111111111111111111122222223333333333333333334444444444444444444444555555555555555566666666666666666666677777777777777777777777777777788888合并为:1111111111111111111122222223333原创 2016-08-30 09:38:17 · 472 阅读 · 0 评论 -
awk条件查找字符串并进行替换
file222.247.0.0/18,222.247.0.0/17,222.247.0.0/13,222.247.0.0/14123.46.0.0/19,123.46.0.0/17,123.46.0.0/13,123.46.0.0/14要求:查找每行当中最大的那个数字,然后在最前面加上*号。处理awk -F',' '{for(i=1;i解析:首先要找到最大值,m存取的是原创 2016-08-30 09:37:38 · 30401 阅读 · 0 评论 -
awk匹配行到某一行
fileaaabbbcccddd要求:从某一行开始,到结束进行输出awk ‘/bbb/,0’ filebbbcccddd解析:其中的0代表的是到文件的末尾进行结束。但是如果是现在要求是匹配到的bbb不进行输出呢awk ‘p{print}/bbb/{p=1}’ file只要当匹配到想要匹配的字符的时候才进行输出。这时候利用一个变量p,当匹配到原创 2016-08-30 09:36:51 · 4279 阅读 · 0 评论 -
awk--getline函数
awk---getline函数讲解:getline函数是awk经常会用到的一个函数,但是awk和next的区别有什么呢,在next之后,awk会重新执行下一条语句,从awk语句的开始出去执行,但是getline则不是,他会跳到下一条语句去执行,但是是接着getline后面的语句去执行,并没有回到awk的头部语句。下面结合几个例子来加以说明1、awk 'BEGIN{"date"|getl原创 2016-08-23 10:07:52 · 994 阅读 · 0 评论 -
awk之数据类型
awk之数据类型在学习awk的过程中,看到了很多的帖子,如果上面的例子对我来说有价值,自己就会把记录并且总结下来。下面说明一个数据类型的东西。echo -e '20.7\n25.5\n3'|awk '{a[$0]}END{for(i in a){if(i>20)print i}}'20.725.53很显然3是不能输出的,但是为什么会输出呢。因为数组的下标将3当做了字符串和2原创 2016-08-23 10:18:51 · 1475 阅读 · 0 评论 -
awk输出相同列的前两行和后两行
要求打印,第一列相同的头两行和后两行:fileAX BX 1AX BX 2AX BX 1AX BX 8AX BX 1AX BX 3AX BX 5CX BX 1CX BX 0CX BX 1CX BX 6CX BX 9EX BX 1EX BX aEX B原创 2016-08-23 11:18:45 · 5208 阅读 · 0 评论 -
awk-getline赋值重定向
我们经常会在awk中使用shell命令,或者是将AWK处理的字段例如$1,$2等进行处理,这种情况应该怎么在AWK中高效的实现呢?1、如果我们想在AWK中使用shell命令的话,可以使用AWK中的system函数,此函数可以帮我们将想要执行的命令直接当shell命令来执行。examplecat file日期 卡号 姓名2016 123 张三2016 234原创 2017-01-11 17:00:54 · 1449 阅读 · 0 评论 -
文本处理join使用
有一个文件file1(tab分隔):XL02 AFPXL03 DFHXL05 ABCXL07 CVB 另一个文件file2(tab分隔):XL01 3 2 aXL02 3 1 bXL03 2 3 CXL04 1 2 dXL05 5 8 s原创 2016-09-05 18:01:12 · 438 阅读 · 0 评论 -
awk出现次数最多的行进行统计
file1 2 3 4 5 6 7 8 910 11 121 3 41 5 6 1 7 81 10 111 12 4要求:统计出现次数最多的那个数,并打印出这个数所在的行(1出现次数最多,就打印出1所在的行):实现:awk '{for(i=1;i解析:首先统计是每个字符出现的元素的个数,a[$i]=a[$i]?a[$i]RS$0:$0,这个语原创 2016-08-25 17:23:24 · 2666 阅读 · 0 评论 -
awk输出首行相同的最大值和最小值
file1 91 101 121 62 42 1002 232 1012 993 103 9983 13 90求出首行相同的最大值和最小值的行进行输出。最大值:awk '{if(a原创 2016-08-25 15:54:56 · 2457 阅读 · 2 评论 -
利用关联数组找出重叠的内容
file12/Feb/2012:23:59:48 /jy3/main.jsp user112/Feb/2012:23:59:48 /js4/main.jsp user212/Feb/2012:23:59:51 /js4/main.jsp user312/Feb/2012:23:59:51 /jy3/main.jsp user312/Feb原创 2016-08-25 15:25:48 · 409 阅读 · 0 评论 -
awk去掉某字符串前面所有的字符
比如:test 1aaaaatest 2 test 3tesbbbbbtest test 4 每行去掉test前面所有字符之后,输出:test 1test 2test 3test test 4处理:awk -F'test' -vOFS="test" '{$1="";$1=$1}1' fileawk '{match($0,"test");pr原创 2016-09-02 17:58:08 · 18252 阅读 · 0 评论 -
awk根据列筛选列内容
file:A B 123C D 123E F 123 G H 123I J K1 2 3 4 5 6 7 1 1 1 1 11 2 1 4 2 6 5 1 1 7 1 11 2 2 4 1 6 6 1 1 4 1 1长度不固定,用空格分隔后得到的数组长度原创 2016-09-02 16:01:26 · 8183 阅读 · 0 评论 -
awk截取字段
filehttp://10.75.30.117/lib/libac1.php?ip=10.75.30.117&port=13690&isbctruncate=1&socialtime=1&nettype=mobilehttp://10.75.30.117/lib/libac1.php?ip=10.75.30.117&port=13666&isbctruncate=1&socialtime=原创 2016-09-02 10:07:01 · 2219 阅读 · 0 评论 -
awk连续行条件筛选
filea b c 1a b c 2a b c 3a b c 4a b c 1a b c 2a b c 1a b c 2a b c 2a b c 2a b c 1提取出第4列>1的行,并且第4列>1的 连续的行数要>原创 2016-09-01 17:17:14 · 1783 阅读 · 0 评论 -
awk OFS问题说明
awk可以定义输出的分隔符,其中默认的输出分隔符OFS为空格。下面通过例子简单的介绍下OFS的应用。1、echo "aaa bbb ccc" | awk -v OFS="|" '{print $0}'aaa bbb cccecho "aaa bbb ccc" | awk -v OFS="|" '{$1=$1;print $0}'aaa|bbb|ccc通过上面的例子可以发现的原创 2016-08-19 14:25:35 · 9782 阅读 · 0 评论 -
awk split分割字符串
awk split方法总结:split可以实现对字符串进行数组类型的分割,下面用例子来说明下。echo ‘abcd’ | awk ‘{len=split($0,a,””);for(i=1;ia[1]=aa[2]=ba[3]=ca[4]=dlength=4解析说明:首先把abcd换为一个数组,并且数组的分隔符为没有符号,len=split($0,a,””)为获取了整个原创 2016-08-19 10:50:58 · 20894 阅读 · 0 评论 -
awk-4
文件:8613302200008,460030902234084,1201,12,600101,2002-03-19 12:00:00,2013-06-29 22:00:508613302200009,460030918855095,1001,12,600101,2010-12-30 18:06:51,2011-09-12 05:30:21要求:将第一行的第三列的1201替换为15,第原创 2016-04-21 10:03:32 · 275 阅读 · 0 评论 -
awk去重总结
awk去重总结:翻看了http://blog.chinaunix.net/uid-2598756-id-293231.html文章,总结下awk去重file1aaa 111bbb 222ccc 333ddd 444aaa 111bbb 222方法一:awk ‘++a[$0]==1{print $0}’ file1 or awk ‘{if(++a[$0]=原创 2016-05-05 11:43:29 · 6051 阅读 · 1 评论 -
awk-11
file1a2b3c1A2B3C要求处理之后变为:1a 1A2b 2B3c 3Cawk '{a[NR%3]=a[NR%3]$0" "}END{OFS="\n";print a[1],a[2],a[0]}' 解释:a[1]=a[1]1a 每三个一个循环,然后把整个字符串赋值给变量,因为取余的是3,所以输出a[1],a[2],a[0]最后输出的就是原创 2016-05-04 11:28:33 · 252 阅读 · 0 评论 -
awk 变量覆盖
文件处理,要求第一列相同的行只保留最后出现的一行。100001 I100001 U100001 D200001 I300000 U200001 D300000 D400000 I400000 U处理完之后的样子为: 100001 D200001 D300000 D400000 Uawk '{a[$1]=$0}END{for(i原创 2016-04-19 11:33:52 · 525 阅读 · 0 评论 -
awk-3
file1 115466 S C ./. ./. 0/0 ./. ./.r1 546608 F C ./. 0/1 0/0 ./. 1/1r2 566085 T原创 2016-04-15 18:32:12 · 266 阅读 · 0 评论 -
awk-2
1、文件两个file1ACEHfile2A BB KB LC TD AD RH CG W要求找出file1中的内容出现在file2中的任意一行都算处理完之后的内容A BC TD AH C处理方法:grep -f file1 file2a原创 2016-04-15 17:00:39 · 256 阅读 · 0 评论 -
AWK求和
awk求和file文件:a 1b 2c 3a 4d 6处理文件要求如果第一个字段相同,那么就把第二个字段的数值加起来。处理后的文件为a 5b 2c 3d 6awk ‘{a[$1]+=$2}END{for(i in a )print i,a[i]}’ file上面的语句就实现了相应的功能。原创 2016-04-14 17:42:57 · 939 阅读 · 0 评论 -
awk RS,gensub
文件file:abc$qwe$rtyu$1245$abc$qwe$rtyu$1234&abc$qwe$5667$899900$abc$qwe$rtyu$1234$要求处理以后变成下面的样子abc$qwe$rtyu$1245$abc$qwe$rtyu$1234&abc$qwe$5667$899900$abc$qwe$rtyu$1234$处理原创 2016-04-14 15:26:12 · 817 阅读 · 0 评论 -
awk-13
file1aaa 111ccc 222ddd 333file2ccc 555eee 666ttt 777ppp 888合并后的文件为ddd 333eee 666aaa 111ttt 777ppp 888ccc 222 555规则:如果file1的第一列有相应的列,第二个没有的话就用空格或者是tab补齐。处理原创 2016-05-24 18:29:03 · 654 阅读 · 0 评论 -
awk-5
文件:a 2 1 4 8 b 3 0 3 7b 4 0 4 7c 2 3 5 6c 1 3 5 6c 2 2 5 6d 8 0 6 4要求:把第一行相同的对应的列加起来。awk '{a[$1]+=原创 2016-04-21 10:27:15 · 295 阅读 · 0 评论 -
awk file1 file2问题总结
awk file1 file2问题总结:如下有两个文本file1aaa 111bbb 222ccc 333ddd 444file2aaa 111bbb 222ccc 333ddd 444eee 555要求1:合并文件file1和file2并且将重复的行排除掉awk 'NR==FNR{a[$0]=1;print $0}NR>FNR&&(!a[$原创 2016-05-05 13:52:23 · 1480 阅读 · 0 评论 -
awk NF
NF作为awk的内置变量,下面简单的说下NF的两种作用。1、当指定输出字段分隔符的时候file aaa 111bbb 222ccc 333ddd 444awk -v OFS=”|” ‘{NF+=0;print $0}’ fileawk -v OFS=”|” ‘{$1=$1;print $0}’ file解释:OFS是对字段起作用的,所以后面的需要对字段进行应原创 2016-05-05 14:52:57 · 1884 阅读 · 0 评论 -
awk按照某个字段排列,求某个列的最大值最小值
fileFFF;2011-10-1;2011-10-1 0:00 ;4.57389FFF;2011-10-1;2011-10-1 0:15 ;4.33278FFF;2011-10-2;2011-10-2 12:45;5.95446FFF;2011-10-2;2011-10-2 15:00;6.21554FFF;2011-10-3;2011-10-3 16:15;6.11111原创 2016-08-29 14:06:35 · 5195 阅读 · 0 评论 -
awk选择性输出
一个序列1开始到100结束,其中步长是4,打印41前面的三个数字seq 1 4 100 |awk '/\/{for(i=NR-3;i333729 解析:如果是打印三个数字的话,那么就是循环三次,所以后面用到了循环三次。再有就是最后面的对序列里面的子进行三个取余的排序,非常简便。下面进行分解操作:1 1 a[1] 12 5 a[2] 53 9原创 2016-08-18 18:37:06 · 1045 阅读 · 0 评论 -
awk 翻转数据
awk处理数据,使数据旋转。1 2 3 4 5 6 2 3 4 5 5 74 5 6 7 8 80 9 8 7 5 2 3 5 6 7 8 9旋转之后,数据为:3 0 4 2 1 5 9 5 3 2 6 8 6 4 3 7 7 7 5 4 8 5 8 5 5 9 2 8 7 6 awk '{for(i=1;i=1;--j)printf("%s",原创 2016-08-18 17:47:04 · 411 阅读 · 0 评论 -
awk-9
文件:a 1a 2a 3c 11c 22c 33c 44b 111b 222b 333b 444b 555处理之后 a 1a 2c 11c 22b 111b 222处理要求:按照第一列进行排序,排序好之后按照第二列就行排序,最后输出首字母相同的前两行sort file | awk ‘a[$1]++sort原创 2016-04-22 17:55:56 · 280 阅读 · 0 评论