首页 > 系统服务 > 详细

shell命令之AWK处理多个文件

时间:2019-10-23 01:03:26      阅读:136      评论:0      收藏:0      [点我收藏+]

1.先写一个AWK处理多个文件的例子

第一个文件打印第一个字段,第二个文件打印第二字段

方法一:

#!/bin/bash
set -x
file1=$(pwd)"/kk1"
file2=$(pwd)"/kk2"
awk -F  {
        if(FILENAME==ARGV[1]){
           print $1;
        }else{
          print $2;
        }
} $file1 $file2

方法二:

#!/bin/bash
set -x
file1=$(pwd)"/kk1"
file2=$(pwd)"/kk2"
:<<EOF
awk -F  {
        if(FILENAME==ARGV[1]){
           print $1;
        }else{
          print $2;
        }
} $file1 $file2
EOF
awk -F  {
        if(NR==FNR){
           print $1;
        }else{
          print $2;
        }
} $file1 $file2

2.AWK的重要常量

ARGC               命令行参数个数
ARGV               命令行参数排列
FILENAME           awk浏览的文件名

FNR                浏览文件的行数(多个文件时,其值会置1,从新开始计数)
NR                 已读的记录数(多个文件时,其值会连续加1,不会置1)
NF                 浏览记录的域的个数(每列的总行数)

FS                 设置输入域分隔符,等价于命令行 -F选项
OFS                输出域分隔符

ORS                输出记录分隔符
RS                 控制输入记录分隔符
ENVIRON            支持队列中系统环境变量的使用
$0变量是指整条记录。$1表示当前行的第一个域,$2表示当前行的第二个域,......以此类推。

$NF是number finally,表示最后一列的信息,跟变量NF是有区别的,变量NF统计的是每行列的总数

指定输出格式符

 1 #!/bin/bash
 2 set -x
 3 file1=$(pwd)"/kk1"
 4 file2=$(pwd)"/kk2"
 5 
 6 awk -F BEGIN{
 7             OFS="\t"
 8         }
 9         {
10         if(NR==FNR){
11            print $1;
12         }else{
13           print $2;
14         }
15         print NR,FNR,NF;
16 } $file1 $file2

 

#!/bin/bash

set -x
file1=$1
file2=$2
cat $file1
awk -F   BEGIN{
                OFS="\t";
        }
{
        if(FILENAME==ARGV[1]){
            arr[$1]=$1;
        }
        else{
           if($1 in arr){
              gsub(/\$\$/,",",$2);
              len=split($2,brr,",")
              for(i=0;i<=len;i++)
                {
                   print brr[i];
                }
              print $1,$2;      
           }
        }

}END{
    #for(e in arr){
    #   print e;
    #}
} $file1 $file2

 

ps .awk单引号里面的内容需要用双引号

3.AWK内置的常见的函数

 

shell命令之AWK处理多个文件

原文:https://www.cnblogs.com/sun5/p/11723613.html

(1)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!