[shell] awk学习
awk处理最后一行
awk '{if(NR>1)print a;a=$0}END{print a="b"}' file
awk 'BEGIN{getline a}{print a;a=$0}END{print a="b"}' file
awk域匹配
echo "12 34" | awk '$1 ~ /1/'
echo "12 34" | awk '$1 ~ "1"'
如果把域放后面,记得字符串多的放~前面
echo "12 34" | awk '"123" ~ $1'
echo "12 34" | awk '"1" ~ $1' #没结果
打印九九乘法法
awk 'BEGIN{for(n=1;n<=9;n++){for(i=1;i<=n;i++){printf i"x"n"="i*n" "}print}}'
每行后面多了一个空格
awk 'BEGIN{for(n=1;n<=9;n++){for(i=1;i<=n;i++){end=i==n?"\n":" ";printf i"x"n"="i*n end}}}'
求最大值、最小值
awk 'max<$1{max=$1}END{print max}' file
awk '{min=(min=="" || min>$1)?$1:min}END{print min}' file
头尾不变,中间行改动
awk '{a[NR]=$0}END{print a[1];for(i=2;i<NR;i++){print a[i]"a"}print a[i]}' file
awk '{a[NR]=$0}END{for(i=1;i<=NR;i++){if(i==1||i==length(a))print a[i];else print a[i]"a"}}' file
sed '1n;$n;s/$/a/' file
awk 'NR==1{print;next}{if(a)print a;a=$0"a"}END{print $0}' file
awk -vn=`grep -c . file` 'NR!=1&&NR!=n{$0=$0"a"}1' file
[root@66a awk]# cat file
"a":"1","b":"2","c":"3","d":"4","e":"5"
"a":"1","b":"2","d":"4"
"c":"3","e":"5"
[root@66a awk]# awk -f what.sh file
abcde
12345
12#4#
##3#5
[root@66a awk]# cat what.sh
BEGIN{FS="[:,]"}
{gsub(/"/,"")}
NR==1{
for(i=1;i<=NF;i+=2){printf $i;a[++n]=$i};
print ""
}
{
for(i=1;i<=NF;i+=2)b[$i]=$(i+1);
for(i=1;i<=n;i++){
if(a[i] in b)printf b[a[i]];
else printf "#"}
print "";
delete b
}
[root@66a awk]# cat a1
1 21
3 22
5 12
[root@66a awk]# cat a2
3 27
5 32
[root@66a awk]# cat a3
1 23
5 12
[root@66a awk]# awk -f what.sh a*
id a1 a2 a3
1 21 0 23
3 22 27 0
5 12 32 12
[root@66a awk]# cat what1.sh
{
a[$1","FILENAME]=$2;
b[$1];
}
END{
printf "id";
for(i=1;i<ARGC;i++)printf "\t"ARGV[i];
print "";
c=asorti(b);
for(i=1;i<=c;i++){
s=b[i];
for(j=1;j<ARGC;j++){
s=a[b[i]","ARGV[j]]?s"\t"a[b[i]","ARGV[j]]:s"\t0"
}
print s;
}
} [root@66a awk]# cat what2.sh
ARGV[1]==FILENAME{c[++n]=$1}
{ a[$1","FILENAME]=$2 }
END {
printf "id";
for(i=1;i<ARGC;i++)printf "\t"ARGV[i];
print "";
for (i=1;i<=n;i++) {
s=c[i];
for (j=1;j<ARGC;j++){
if(c[i]","ARGV[j] in a)s=s"\t"a[c[i]","ARGV[j]];
else s=s"\t0";
}
print s;
}
}
[shell] awk学习的更多相关文章
- shell awk学习3
需求: 某文件aa的内容如下: a/p1/p2b/pp1c/ppp1/ppp3d/p1/p2/p3e/p1/p2/p3/p4 期望输出结果: a /p1 /p2 b /pp1 c /ppp1 /ppp ...
- 学习笔记之Shell脚本学习指南 & sed与awk & 正则表达式
正则表达式_百度百科 http://baike.baidu.com/link?url=ybgDrN2WQQKN64_gu-diCqdeDqL8LQ-jiQ-ftzzPaNUa9CmgBRDNnyx50 ...
- Shell 脚本学习资料搜集
Shell文档 ChinaUnix上大神“網中人”总结的Shell十三问,强烈推荐,这本书讲得比较精炼,而且都是一些Shell学习中容易把握不住的一些细节难点.每一问都写得非常精彩.ChinaUnix ...
- 转 shell脚本学习指南
shell脚本学习指南 以下八点不敢说就能成为你shell脚本学习指南de全部,至少可以让你编写出可靠的shell脚本. 1. 指定bashshell 脚本的第一行,#!之后应该是什么?如果拿这个问题 ...
- Linux shell 菜鸟学习笔记....
20171123 Linux shell 基础学习笔记1. shell 的开始 一般是 #!/bin/bash 通过 #! 来唯一指定使用的shell路径 其他的 # 都表示注释.2. shell 的 ...
- Linux 下shell 编程学习脚手架
linux body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-t ...
- Linux 下Shell的学习
1.Shell学习 1.什么是Shell shell是一个命令解析器,在操作系统的最外层,负责和用户对话,将用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果.2.什么是shell脚本 ...
- Shell脚本学习指南笔记
Shell脚本学习指南 作者:Danbo 2015-8-3 脚本编程语言与编译型语言的差异 许多中型.大型的程序都是用编译型语言写的,例如:C.C+.Java等.这类程序只要从源代码(Source C ...
- shell语法学习
[原文] 菜鸟笔记shell教程学习. 本篇博客只是记录shell的一些关键语法,主要是做一个记录,有些内容也是copy过来的,并不是一个完整的教程,想完整学习shell的同学可以前往 shell脚本 ...
随机推荐
- vue-cli3 使用mint-ui
关于vue-cli3.x按需引入mint-ui问题记录: 按需引入 借助 babel-plugin-component,我们可以只引入需要的组件,以达到减小项目体积的目的. 首先,安装 babel-p ...
- Mysql-多表连接的操作和用法
一 .介绍 二 .多表连接查询 三 .符合条件连接查询 四 .子查询 一.介绍 本节主题 多表连接查询 复合条件连接查询 子查询 准备表 #建表 create table dep( id int, n ...
- 企业案例:查找当前目录下所有文件,并把文件中的https://www.cnblogs.com/zhaokang2019/字符串替换成https://www.cnblogs.com/guobaoyan2019/
企业案例:查找当前目录下所有文件,并把文件中的https://www.cnblogs.com/zhaokang2019/字符串替换成https://www.cnblogs.com/guobaoyan2 ...
- Redis推荐阅读笔记整理
Herrt灬凌夜 https://www.cnblogs.com/wuyx/archive/2018/03.html 6. Redis_常用5大数据类型简介 5. redis_安装 4. Red ...
- php文件相关操作
//遍历目录及文件 function myBianli($dirname){ //1.打开 $dir = opendir($dirname); //2.读取 while($filename = rea ...
- Hadoop(12)-MapReduce框架原理-Hadoop序列化和源码追踪
1.什么是序列化 2.为什么要序列化 3.为什么不用Java的序列化 4.自定义bean对象实现序列化接口(Writable) 在企业开发中往往常用的基本序列化类型不能满足所有需求,比如在Hadoop ...
- 手搓一个兔子问题(分享一个C语言问题,持续更新...)
大家好,我是小七夜,今天就不分享C语言的基础知识了,分享一个比较好玩的C语言经典例题:兔子问题 题目是这样的:说有一个穷苦人这天捉到了一只公兔子,为了能繁衍后代他又买了一只母兔子,后来兔子开始生小兔子 ...
- java的三个体系
Java是由SunMicrosystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称.由JamesGosling和同事们共同研发,并在1995年正式推出. Java分为 ...
- 20155202 《Java程序设计》实验二(面向对象程序设计)实验报告
20155202 <Java程序设计>实验二(面向对象程序设计)实验报告 代码托管 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉 ...
- 20155220 2016-2017-2《Java程序设计》课程总结
20155220 2016-2017-2<Java程序设计>课程总结 每周作业链接汇总 预备作业1:师生关系 预备作业2:优秀技能经验 预备作业3:虚拟机linux初接触 第一周学习总结: ...