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学习的更多相关文章

  1. 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 ...

  2. 学习笔记之Shell脚本学习指南 & sed与awk & 正则表达式

    正则表达式_百度百科 http://baike.baidu.com/link?url=ybgDrN2WQQKN64_gu-diCqdeDqL8LQ-jiQ-ftzzPaNUa9CmgBRDNnyx50 ...

  3. Shell 脚本学习资料搜集

    Shell文档 ChinaUnix上大神“網中人”总结的Shell十三问,强烈推荐,这本书讲得比较精炼,而且都是一些Shell学习中容易把握不住的一些细节难点.每一问都写得非常精彩.ChinaUnix ...

  4. 转 shell脚本学习指南

    shell脚本学习指南 以下八点不敢说就能成为你shell脚本学习指南de全部,至少可以让你编写出可靠的shell脚本. 1. 指定bashshell 脚本的第一行,#!之后应该是什么?如果拿这个问题 ...

  5. Linux shell 菜鸟学习笔记....

    20171123 Linux shell 基础学习笔记1. shell 的开始 一般是 #!/bin/bash 通过 #! 来唯一指定使用的shell路径 其他的 # 都表示注释.2. shell 的 ...

  6. Linux 下shell 编程学习脚手架

    linux body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-t ...

  7. Linux 下Shell的学习

    1.Shell学习 1.什么是Shell    shell是一个命令解析器,在操作系统的最外层,负责和用户对话,将用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果.2.什么是shell脚本 ...

  8. Shell脚本学习指南笔记

    Shell脚本学习指南 作者:Danbo 2015-8-3 脚本编程语言与编译型语言的差异 许多中型.大型的程序都是用编译型语言写的,例如:C.C+.Java等.这类程序只要从源代码(Source C ...

  9. shell语法学习

    [原文] 菜鸟笔记shell教程学习. 本篇博客只是记录shell的一些关键语法,主要是做一个记录,有些内容也是copy过来的,并不是一个完整的教程,想完整学习shell的同学可以前往 shell脚本 ...

随机推荐

  1. 关于修改计算机名称导致无法启动Oracle监听?

    解决方法: 修改D:\app\‘admin’\product\11.2.0\dbhome_1\NETWORK\ADMIN\路径下的listener.ora和tnsnames.ora文件配置中的host ...

  2. [iOS]AVSpeechSynthesizer语音合成

    #import <AVFoundation/AVFoundation.h> // 初始化方法 AVSpeechSynthesizer *speech = [[AVSpeechSynthes ...

  3. JSON定义及应用

    1 什么是JSON? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) 是轻量级的文本数据交换格式,JSON 比 XML 更小.更快,更易解析 ...

  4. 复习宝典之Mysql数据库

    查看更多宝典,请点击<金三银四,你的专属面试宝典> 第一章:mysql数据库 1)mysql与mariaDb MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用 ...

  5. es6 入坑笔记(五)

    Symbol 主要用做key或私有变量,Symbol是唯一的不可重复的,也是一个单独的数据类型 定义形式: let demo=Symbol("aaaa"); 1.Symbol不能使 ...

  6. vue项目使用微信公众号支付总结

    微信公众号支付 1. 使用jssdk调用微信支付,具体查看开发文档: 使用的vuex,在mutations中 wechatPay (state, data) { state.payObject = d ...

  7. 记遇到的一个php坑

    最近对项目的一个高访问量业务接口进行功能扩展,上线一段时间后,服务器cpu load突然飙升,并出现大量502.一开始找运维查看日志,并没有看是什么问题,后来发现别的部门项目之前也遇到类似的问题,原来 ...

  8. python列表的通用操作

    #'+'和'*'#+可以将两个列表拼接为一个列表my_list = [1,2,3]+[4,5,6]#*可以将列表重复指定的次数my_list = [1,2,3]*5 print(my_list) #创 ...

  9. hive的分桶

    套话之分桶的定义: 分桶表是对列值取哈希值的方式,将不同数据放到不同文件中存储.对于 hive 中每一个表.分区都可以进一步进行分桶. 列的哈希值除以桶的个数来决定每条数据划分在哪个桶中.(网上其它定 ...

  10. git如何到精通

    git教程   目录 一.版本控制概要 1.1.什么是版本控制 1.2.常用术语 1.3.常见的版本控制器 1.4.版本控制分类 1.4.1.本地版本控制 1.4.2.集中版本控制 1.4.3.分布式 ...