`
he_wen
  • 浏览: 238599 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

shell 处理文件重复字符实现累加----awk

 
阅读更多

shell 处理文件重复字符实现累加----awk

 

需求一个文本test:

zhangsan.li  22 33 232

lisi.hua        23 23  23

zhangsan.li  09 2    33

hujian,qi       89 3    34

lisi.hua        98  34  34

要转换成:

zhangsan.li  31 35 265

lisi.hua        112 57  57

hujian,qi       89 3    34

 

下面是shell脚本的代码:

 

#!/bin/bash
cat test
echo 'merge file'
cat test | awk '{a[$1]+=$2;b[$1]+=$3;c[$1]+=$4}END{for (i in a) print i,a[i],b[i],c[i];}'

 将结果重定向一个文件,并且按照第二列进行升序排序。

 
cat test | awk '{a[$1]+=$2;b[$1]+=$3;c[$1]+=$4}END{for (i in a) print i,a[i],b[i],c[i];}' \
 > result.txt 2>&1 | awk '{sort -rnk $2}'

 

 

监听端口的连接数

 

netstat -anp|grep :80|awk '{print $5}'|awk -F: '{print $1}'|awk '{a[$1]+=1;}END{for (i in a) print i,a[i];}'
 

 

二、shell脚本多行合并-------------高级用法

 

    要求:

    文件:text.txt 格式:
    web01[192.168.2.100]

    httpd            ok
    tomcat               ok
    sendmail               ok
    web02[192.168.2.101]
    httpd            ok
    postfix               ok
    web03[192.168.2.102]
    mysqld            ok
    httpd               ok

     

    需要通过awk将输出格式变成:

    web01[192.168.2.100]:   httpd            ok
    web01[192.168.2.100]:   tomcat               ok
    web01[192.168.2.100]:   sendmail               ok
    web02[192.168.2.101]:   httpd            ok
    web02[192.168.2.101]:   postfix               ok
    web03[192.168.2.102]:   mysqld            ok
    web03[192.168.2.102]:   httpd               ok

     

    分析:

    分析发现需要将包含有“web”行进行跳过,然后需要将内容与下面行合并为一行。

    [chengmo@centos5 shell]$ awk '/^web/{T=$0;next;}{print T":\t"$0;}' test.txt

    web01[192.168.2.100]:   httpd            ok
    web01[192.168.2.100]:   tomcat               ok
    web01[192.168.2.100]:   sendmail               ok
    web02[192.168.2.101]:   httpd            ok
    web02[192.168.2.101]:   postfix               ok
    web03[192.168.2.102]:   mysqld            ok
    web03[192.168.2.102]:   httpd               ok
 

$0代表整行输出

 

 

 

分享到:
评论

相关推荐

    unix shell awk 修改ini文件的脚本

    ### Unix Shell Awk 修改Ini文件的脚本解析 在Unix环境下,经常需要处理各种配置文件,其中.ini格式的配置文件非常常见。这类文件通常用于存储应用程序的设置信息,包括数据库连接、路径设置等。本文将深入探讨如何...

    yinyuemi--awk初学之常见问题1

    - FNR(File Number Record)也是awk内置变量,但它是针对当前文件的行数,从1开始累加,每处理完一个文件,FNR会重置为1。只有当处理多个输入文件时,NR和FNR的值才会不同。 举例来说,如果有两个文件file1和file2...

    awk 工具用法说明

    - `awk '$1=="CT"' file`: 显示文件`file`中第一列为字符串`CT`的所有行。注意必须使用双引号。 - `awk '$1*$2>100' file`: 显示文件`file`中第一列与第二列相乘的结果大于`100`的所有行。 - `awk '$2>5&&$2显示...

    awk_手册【中文】.pdf

    - **管道与子进程:**AWK可以方便地与shell命令结合使用,实现数据的多级处理。 - **丰富的内置函数:**包括字符串处理、数值计算等常用功能,提高编程效率。 #### 三、AWK学习指南 **读者背景要求:** - **熟悉...

    awk_linux_bash_awk_

    `bash`是Bourne-Again SHell的缩写,是Unix和Linux系统中的默认shell,而`awk`则是一种编程语言,特别适合于文本处理和数据分析。本文将深入探讨这两个工具以及它们如何协同工作。 **awk基础知识** `awk`这个名字...

    linux shell 实现IP和数字的转换

    要将点分十进制IP转换为十进制整数,我们可以编写一个Shell脚本,使用`awk`或`expr`命令来处理。以下是一个简单的示例: ```bash #!/bin/bash ip="192.168.1.1" octets=(${ip//\./ }) dec_ip=0 for octet in "${...

    几个shell编程的小例子

    在Shell编程中,这些都可以通过内置的命令和函数来实现,例如,使用`grep`查找特定文本,`sed`进行文本替换,或者`awk`进行复杂的行处理。 在学习和实践这些Shell编程小例子时,理解基本的语法结构、命令以及如何...

    生产环境awk最佳实践

    在Linux和Unix环境中,`awk`是一款非常强大的文本处理工具,它能够执行复杂的文本分析任务而无需编写大量的程序代码。本文将基于提供的示例脚本,详细介绍`awk`在生产环境中的应用技巧,并对各个知识点进行深入探讨...

    Shell脚本统计文件行数的8种方法

    这篇文章主要讲述了8种不同的方法来实现这个目标,分为两大类:获取单个文件的行数和获取特定目录下所有文件的行数。 **获取单个文件行数的方法** 1. **方法一**:使用`awk`命令,通过`print NR`打印行号,然后用`...

    linux运维命令

    - `awk '{a+=$1} END {print a}'`: 累加所有文件大小。 #### 十四、监控系统性能 **1. CPU负载** **命令示例:** ```bash cat /proc/loadavg ``` **解析:** - 输出前三个值代表过去1分钟、5分钟和15分钟的平均负载...

    Shell编程常见面试题(待续)

    这些面试题覆盖了基础的文件操作、文本处理和逻辑控制,是评估Shell编程能力的重要方面。理解并熟练掌握这些命令和技巧,能够提高在日常工作中解决问题的效率。在实际面试中,面试官可能会根据这些基础题目的答案,...

    linux常用语句[归类].pdf

    `计算每个文件的字节数,最后通过`awk`累加总和。 了解和熟练运用这些命令能够极大地提升Linux系统的管理效率,特别是对于服务器监控、性能优化等方面,这些基本技能是必备的。同时,学习如何组合使用这些命令,...

    值得收藏的40个命令总结.docx

    `查找并计算jpg文件的大小,然后用`awk`累加。 16. **CPU负载**: `cat /proc/loadavg`显示系统负载平均值,通常关注前三个值。 17. **监控CPU负载**: `mpstat`命令实时监测CPU负载,`1 1`表示每隔1秒报告1次。...

    利用shell命令统计日志的方法详解

    Shell作为Linux系统的核心工具之一,在日志处理方面提供了强大的功能。本文将详细介绍如何使用Shell命令对日志进行有效的统计与分析。 #### 日志文件结构 为了更好地理解日志处理过程,我们先定义一个日志文件结构...

    shell 中数学计算总结

    默认情况下,Shell对变量的处理视为字符串类型。因此,当我们需要进行数学运算时,需要采取特殊的方法来进行数值计算。本文将详细介绍在Shell中执行数学运算的各种方法及其注意事项。 #### 错误示范 1. **直接使用...

    Shell根据web日志计算平均连接时间功能

    在IT行业中,Shell脚本是Linux/Unix系统中常用的一种自动化工具,用于处理文本文件、执行系统管理任务等。在Web服务器的运维中,分析web日志是非常常见的一项工作,例如,通过日志来了解服务器的性能指标,如连接...

    flip-coin-combination

    最后,为了展示和分析结果,我们可能还需要将统计信息输出到文件,或者使用`awk`、`sort`和`uniq`等命令进行进一步的数据处理和分析。 总结起来,"flip-coin-combination"问题是一个结合了概率计算、组合分析和...

Global site tag (gtag.js) - Google Analytics