收了本论坛的三个例子

QUOTE:
1、用某一文件的一个域替换另一个文件中的的特定域?
http://bbs.chinaunix.net/forum/viewtopic.php?t=500015
文件passwd:
s2002408030068:x:527:527::/home/dz02/s2002408030068:/bin/pw
s2002408032819:x:528:528::/home/dz02/s2002408032819:/bin/pw
s2002408032823:x:529:529::/home/dz02/s2002408032823:/bin/pw

文件shadow:
s2002408030068:$1$d8NwFclG$v4ZTacfR2nsbC8BnVd3dn1:12676:0:99999:7:::
s2002408032819:$1$UAvNbHza$481Arvk1FmixCP6ZBDWHh0:12676:0:99999:7:::
s2002408032823:$1$U2eJ3oO1$bG.eKO8Zupe0TnyFhWX9Y.:12676:0:99999:7:::

用shadow文件中的密文部分替换passwd中的"x",生一个新passwd文件,如下所示
s2002408030068:$1$d8NwFclG$v4ZTacfR2nsbC8BnVd3dn1:527:527::/home/dz02/s2002408030068:/bin/pw
s2002408032819:$1$UAvNbHza$481Arvk1FmixCP6ZBDWHh0:528:528::/home/dz02/s2002408032819:/bin/pw
s2002408032823:$1$U2eJ3oO1$bG.eKO8Zupe0TnyFhWX9Y.:529:529::/home/dz02/s2002408032823:/bin/pw

[Copy to clipboard] [ - ]

CODE:

awk 'BEGIN{OFS=FS=":"} NR==FNR{a[$1]=$2}NR>FNR{$2=a[$1];print}' shadow passwd

NR==FNR,第一个文件shadow,以$1为下标,将$2的值赋给数组a
NR>FNR,第二个文件passwd,将文件shadow$2的值赋值给文件passwd

QUOTE:
2、
cat file1:
0011AAA 200.00 20050321
0012BBB 300.00 20050621
0013DDD 400.00 20050622
0014FFF 500.00 20050401

cat file2:
I0011  11111
I0012  22222
I0014  55555
I0013  66666

规则:比较 file1的1-4字符 和 file2的2-5 字符,如果相同,将file2 的第二列 与 file1 合并 file3

0011AAA 200.00 20050321 11111
0012BBB 300.00 20050621 22222
0013DDD 400.00 20050622 66666
0014FFF 500.00 20050401 55555

[Copy to clipboard] [ - ]

CODE:

awk  'NR==FNR{a[substr($1,2,5)]=$2}NR>FNR&&a[b=substr($1,1,4)]{print $0, a[b]}' file2 file1 >file3

QUOTE:
3、如果文件a中包含文件b,则将文件b的记录打印出来
http://bbs.chinaunix.net/forum/viewtopic.php?t=520411

文件a:
10/05766798607,11/20050325191329,29/0.1,14/05766798607
10/05767158557,11/20050325191329,29/0.08,14/05767158557

文件b:
05766798607
05766798608
05766798609
通过文件a和文件b对比,导出这样的文件出来.
10/05766798607,11/20050325191329,29/0.1,14/05766798607

a

[Copy to clipboard] [ - ]

CODE:

wk -F'[/,]' 'ARGIND==1{a[$0]}ARGIND>1{($2 in a);print $0}' b a
awk -F'[/,]' 'NR==FNR{a[$0]}NR>FNR{($2 in a);print $0}' b a

QUOTE:
4、
file1文件内容
   1     0.5  100
                                 10  15    36.5
file2文件
        50   10    9
                                 3.2   1     5
将两个文件合成一个文件如:
   51     10.5    109
                                                              13.2   16      41.5
就是对应的字段进行相加以后的数字。
awk '{for (i=1;i<=NF;i++) a=$i
getline <"file2"
for (i=1;i<NF;i++) printf $i+a
" ";
printf $NF+a[NF] "\n"}' file1

[Copy to clipboard] [ - ]

CODE:

awk '{for (i=1;i<=NF;i++) a[i]=$i;getline <"file2";for (i=1;i<NF;i++) printf $i+a[i]" ";printf $NF+a[NF] "\n"}' file1


QUOTE:
5、
文件a
1000 北京市 地级 北京市 北京市
1100 天津市 地级 天津市 天津市
1210 石家庄市 地级 石家庄市 河北省
1210 晋州市 县级 石家庄市 河北省
1243 滦县 县级 唐山市 河北省
1244 滦南县 县级 唐山市 河北省

b文件:
110000,北京市
120000,天津市
130000,河北省
130131,平山县
130132,元氏县
这样的字段
a中第二列在b中可能有可能没有,需要把有的匹配起来生成新的一列:要包含a和b的第一列。没有匹配的按照b原来的格式进行输出。

[Copy to clipboard] [ - ]

CODE:

awk 'BEGIN{FS="[ |,]";OFS=","}NR<=FNR{a[$2]=$1}NR>FNR{print $1,$2,a[$2]}' a b

QUOTE:
6、
file1的第一列与file2的第3列相同,
file1的第二列与file2的第4列的3-5位相同,
file1的第三列与file2的最后一列相同,
# cat file1
AAA  001  1000.00
BBB  001  2000.00
DDD  002  4000.00
EEE  002  5000.00
FFF  003  6000.00
# cat file2
01 1111  AAA  WW001  $$$$  1000.00
02 2222  BBB  GG001  %%%%  2000.00
03 3333  CCC  JJ001  ****  3000.00
04 4444  DDD  FF002  &&&&  4000.00
05 5555  EEE  RR002  @@@@  5000.00
06 666   FFF  UU003  JJJJ  6000.00
07 777   III  II005  PPPP  7000.00
08 8888  TTT  TT008  TTTT  8000.00

[Copy to clipboard] [ - ]

CODE:

# awk 'NR<=FNR{a[$1]=$1"x"$2"x"$3}
> NR>FNR{b=substr($4,3);c=$3"x"b"x"$6;if(c==a[$3]) print}' file1 file2
01 1111  AAA  WW001  $$$$  1000.00
02 2222  BBB  GG001  %%%%  2000.00
04 4444  DDD  FF002  &&&&  4000.00
05 5555  EEE  RR002  @@@@  5000.00
06 666   FFF  UU003  JJJJ  6000.00

转载于:https://www.cnblogs.com/aquester/archive/2012/07/24/9891904.html

用awk数组处理两个文件的例子相关推荐

  1. awk数组处理两个文件的例子

    awk数组处理两个文件的例子  如果文件a中包含文件b,则将文件b的记录打印出来输出到c文件里 文件a:  10/05766798607,11/20050325191329,29/0.1,14/057 ...

  2. shell中join链接多个域_Linux Shell中使用awk完成两个文件的关联Join

    Shell中的awk命令是非常强大的,有很多书籍专门介绍awk的.本文介绍的只是其中很小的一个点,使用awk命令完成两个文件的关联join. 先看看awk中的两个自身变量,NR和FNR. awk可以指 ...

  3. Shell awk两个文件的对比 NR和FRN

    2019独角兽企业重金招聘Python工程师标准>>> 使用awk对两个文件的对比: 认识:NR和FRN NR:表示当前记录数 FNR:也表示当前记录数,但是FNR的作用域只在一个文 ...

  4. Shell合并两个文件成一个文件的两列paste,awk

    Shell合并两个文件成一个文件的两列 发布时间:2014-07-20   编辑:www.jquerycn.cn Shell合并两个文件成一个文件的两列,提供了两种方法,普通shell脚本,awk脚本 ...

  5. python遍历数组的两种方法及将print的内容写入文件中

    python遍历数组的两种方法 第一种,最常用的,通过for in遍历数组 colours = ["red","green","blue"] ...

  6. linux awk合并文件,在Linux中使用AWK合并两个文件

    我有一个1.txt文件: betomak@msn.com||o||0174686211||o||7880291304ca0404f4dac3dc205f1adf||o||Mario||o||Mario ...

  7. awk 数组用法【精华贴】

    文本处理的工作中,awk的数组是必不可少的工具,在这里,同样以总结经验和教训的方式和大家分享下我的一些学习心得,如有错误的地方,请大家指正和补充. awk的数组,一种关联数组(Associative ...

  8. linux下awk命令详解,Linux文件处理awk命令-linux awk命令详解-嗨客网

    Linux文件处理awk命令详解教程 Linux awk命令说明 awk 是一个强大的文本分析工具,相对于 awk 有 3 个不同版本: awk.nawk 和 gawk,未作特别说明,一般指 gawk ...

  9. awk数组详解、实战

    1.其它编程语言数组的下标一般从0开始,awk中数组下标默认从1开始,也可以从0开始设置: awk 'BEGIN{huluwa[0]="大娃";huluwa[1]="二娃 ...

最新文章

  1. 40个亿非负整数中找到未出现的数
  2. virtualpc设置共享文件夹
  3. Insta360:从软到硬,一年做出360°全景相机,中间填了多少坑?
  4. 如何使Mac Docker支持SQL on Linux容器Volume特性
  5. 无法显示验证码去掉html,如何去除验证码-模版风格-易通免费企业网站系统 - Powered by CmsEasy...
  6. 高仿蓝奏云单页下载页面源码
  7. (三十)java版spring cloud+spring boot+redis多租户社交电子商务平台- gateway限流
  8. visio自己画的图怎么填充_Visio怎么画直线并填充颜色?
  9. java oracle11g jar_oracle11g驱动jar包下载
  10. 晒下自己App广告平台积分墙收入,顺便点评几个广告平台
  11. windows API 实现精确的打点计时器
  12. 鱼和熊掌兼得:C++代码在编译时完成白盒测试
  13. opencv vs2010 应用程序无法正常启动(oxc000007b) 解决
  14. linux打开xml文件,查看 XML 文件
  15. 极度的坦诚就是无坚不摧
  16. 【ACM-ICPC 2018 南京赛区网络预赛 E】AC Challenge
  17. 我的第一篇博客!!!万里长征第一步!!!
  18. STM32F407ZG单片机晶振由例程默认推荐的8M换为自定义的4-26M时的注意事项
  19. 几种编程题高难度常用算法总结
  20. 【Matlab风电功率预测】麻雀算法优化BP神经网络风电功率预测【含源码 1319期】

热门文章

  1. binlog_group_commit_sync_delay 参数对并发的影响
  2. BZOJ1068:[SCOI2007]压缩——题解
  3. C#模拟POST提交表单(二)--HttpWebRequest以及HttpWebResponse
  4. Gallery 之滑动速度的问题
  5. python的print换行
  6. Spring Cloud搭建微服务架构----使用Zipkin做服务链路追踪
  7. vue2+webpack2实现饿了么移动端商家页面
  8. java操作protobuf
  9. Centos6部署lamp: httpd2.4+module模式
  10. Maven工程构建时报编码警告的解决办法