awk
6子
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
shell 排列组合
#!/bin/bash for ((i=1;i<=$#;i++)) do eval echo $(echo $@|awk -vOFS=, -vn=$i '{$1=$1;for(i=1;i<=n;i++)printf "{"$0"}"}')|xargs -n1 done 执行结果如下: [root@centos test]# sh test.sh 1 2 3 1 2 3 11原创 2013-09-08 16:44:22 · 4124 阅读 · 0 评论 -
将文件按照行数以及顺序拆分成多个文件
awk -vf=3 -vl="`wc -l file`" 'BEGIN{p=int(l/f);q=(l%f);for(n=1;na[i])i++;print >"file"i}' file 这里的-vf=3 表示将file拆分成3个文件,另外还有一种解法,如下所示: #!/bin/bash if [ $# -ne 2 ];then echo "U: sh $0原创 2013-09-08 16:12:37 · 1704 阅读 · 0 评论 -
按数据的区间进行处理
file数据内容如下所示: A 0 0.00521 A 1 0.0111 A 2 0.0173 A 3 0.0281 A 4 0.0423 A 5 0.0606 A 6 0.0938 A 7 0.128 A 8 0.159 A 9 0.174 A 10 0.183 A 11 0.19 A 12 0.2 A 13 0.21转载 2013-09-11 22:45:38 · 1243 阅读 · 0 评论 -
awk 的性能测试
需求简单描述如下: a文件内容: a a a 12 a b b 10 a c c 8 a c f 5 b文件内容: a a a 10 a b b 8 a c d 3 处理后的内容,即前面三列相同的,第四列进行累加,得到如下: a a a 22 a b b 18 a c c 8 a c f 5 a c d 3 PS:每个文件都是1000W行以上,代码如下: awk '{n=$NF;NF--原创 2013-09-12 12:06:49 · 2405 阅读 · 0 评论 -
awk 实现前面两个数累加为第三个数如0 1 1 2 3 5 8 13……
1. 结果为: 0 1 2 3 5 8 13 21 34 55 89 144 代码: awk 'BEGIN{s=0;m=100;while(1){print s=s+n;n=s-n;if(!s)++s;if(s>m)exit}}' 2. 结果为: 0 1 1 2 3 5 8 13 21 34 55 89 代码: awk 'BEGIN{s=0;m=100;w原创 2013-09-12 20:36:03 · 1734 阅读 · 0 评论 -
关于 1+2+3+4+...+98+99+100 的shell问题
貌似很多公司面试都喜欢问下这个问题,下面总结下这个shell的解法: seq 100 |echo $[ $(tr '\n' '+') 0] echo $[$(echo +{1..100})] seq 100 | awk '{sum+=$0}END{print sum}' echo {1..100} | sed 's/\s/\+/g' | bc awk 'BEGIN{for(i原创 2013-10-23 10:20:39 · 2129 阅读 · 0 评论 -
awk 的怪异现象以及其解决之道:正则表达式范围与语言环境的悲伤故事
[seesea@UC ~]$ echo abcABC | awk '{print IGNORECASE ":" gensub(/([[:lower:]])/, "x", "g");}' 0:xxxABC [seesea@UC ~]$ echo abcABC | awk '{print IGNORECASE ":" gensub(/([a-z])/, "x", "g");}'原创 2013-10-30 18:37:45 · 971 阅读 · 0 评论 -
awk 取绝对值最大
[root@centos6-1 ~]# cat infile aaa -1 aaa -2 aaa -3 aaa 28 aaa -22 bbb -2 bbb -4 bbb -6 ccc -2 ccc -3 ccc -8 ccc -10 ddd -2 ddd -4 ddd -12 [root@centos6-1 ~]# [root@centos6-1 ~]# [ro原创 2013-11-20 11:25:53 · 7406 阅读 · 0 评论 -
awk 自增行累加值
另外一个关于数字运算的问题,想这样求和:第一行直接输出,弟2行和弟3行数值相加,4,5, 6行相加;7,8,9,10再相加,后面则为11,12,3,14,15相加。总的说,以递增行数的形式相加,这里我列出了简单的1-10,结果直接显示和就行。 1 2 3 4 5 6 7 8 9 10 输出 1 5 15 34 即可,谢谢大家。 我的方法:awk 'fu原创 2013-12-12 21:31:52 · 5272 阅读 · 0 评论 -
将文本转换成json格式
#!/bin/bash format(){ usedifs="$IFS" IFS=$'\n';[ $# -eq 0 ] && { echo "not files need format." ;exit 1; } for((i=1;i<=$#;i++));do files=(${files[@]} ${!i});done log1()原创 2013-12-13 17:07:35 · 9157 阅读 · 0 评论 -
awk 中 利用shell命令和管道 捕捉返回内容
命令: awk 'NR==1{print;next}{cmd="date -d "$NF " +%s";cmd |getline d;a[d]=$0}END{t=asorti(a,b);for(n=t;n>0;n--)print a[b[n]]}' FILE 参考: http://bbs.chinaunix.net/thread-4115342-1-1.html原创 2013-12-13 15:11:07 · 3035 阅读 · 0 评论 -
awk 处理文本:行转列,列转行
[root@centos ~]# cat f 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 [root@centos ~]# awk '{for(i=1;i<=NF;i++)a[NR,i]=$i}END{for(j=1;j<=NF;j++)for(k=1;k<=NR;k++)printf k==NR?a[k,j] RS:a[k,j] FS}'原创 2013-10-25 11:38:04 · 29509 阅读 · 2 评论
分享