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环境下,经常需要处理各种配置文件,其中.ini格式的配置文件非常常见。这类文件通常用于存储应用程序的设置信息,包括数据库连接、路径设置等。本文将深入探讨如何...
- FNR(File Number Record)也是awk内置变量,但它是针对当前文件的行数,从1开始累加,每处理完一个文件,FNR会重置为1。只有当处理多个输入文件时,NR和FNR的值才会不同。 举例来说,如果有两个文件file1和file2...
- `awk '$1=="CT"' file`: 显示文件`file`中第一列为字符串`CT`的所有行。注意必须使用双引号。 - `awk '$1*$2>100' file`: 显示文件`file`中第一列与第二列相乘的结果大于`100`的所有行。 - `awk '$2>5&&$2显示...
- **管道与子进程:**AWK可以方便地与shell命令结合使用,实现数据的多级处理。 - **丰富的内置函数:**包括字符串处理、数值计算等常用功能,提高编程效率。 #### 三、AWK学习指南 **读者背景要求:** - **熟悉...
`bash`是Bourne-Again SHell的缩写,是Unix和Linux系统中的默认shell,而`awk`则是一种编程语言,特别适合于文本处理和数据分析。本文将深入探讨这两个工具以及它们如何协同工作。 **awk基础知识** `awk`这个名字...
要将点分十进制IP转换为十进制整数,我们可以编写一个Shell脚本,使用`awk`或`expr`命令来处理。以下是一个简单的示例: ```bash #!/bin/bash ip="192.168.1.1" octets=(${ip//\./ }) dec_ip=0 for octet in "${...
在Shell编程中,这些都可以通过内置的命令和函数来实现,例如,使用`grep`查找特定文本,`sed`进行文本替换,或者`awk`进行复杂的行处理。 在学习和实践这些Shell编程小例子时,理解基本的语法结构、命令以及如何...
在Linux和Unix环境中,`awk`是一款非常强大的文本处理工具,它能够执行复杂的文本分析任务而无需编写大量的程序代码。本文将基于提供的示例脚本,详细介绍`awk`在生产环境中的应用技巧,并对各个知识点进行深入探讨...
这篇文章主要讲述了8种不同的方法来实现这个目标,分为两大类:获取单个文件的行数和获取特定目录下所有文件的行数。 **获取单个文件行数的方法** 1. **方法一**:使用`awk`命令,通过`print NR`打印行号,然后用`...
- `awk '{a+=$1} END {print a}'`: 累加所有文件大小。 #### 十四、监控系统性能 **1. CPU负载** **命令示例:** ```bash cat /proc/loadavg ``` **解析:** - 输出前三个值代表过去1分钟、5分钟和15分钟的平均负载...
这些面试题覆盖了基础的文件操作、文本处理和逻辑控制,是评估Shell编程能力的重要方面。理解并熟练掌握这些命令和技巧,能够提高在日常工作中解决问题的效率。在实际面试中,面试官可能会根据这些基础题目的答案,...
`计算每个文件的字节数,最后通过`awk`累加总和。 了解和熟练运用这些命令能够极大地提升Linux系统的管理效率,特别是对于服务器监控、性能优化等方面,这些基本技能是必备的。同时,学习如何组合使用这些命令,...
`查找并计算jpg文件的大小,然后用`awk`累加。 16. **CPU负载**: `cat /proc/loadavg`显示系统负载平均值,通常关注前三个值。 17. **监控CPU负载**: `mpstat`命令实时监测CPU负载,`1 1`表示每隔1秒报告1次。...
Shell作为Linux系统的核心工具之一,在日志处理方面提供了强大的功能。本文将详细介绍如何使用Shell命令对日志进行有效的统计与分析。 #### 日志文件结构 为了更好地理解日志处理过程,我们先定义一个日志文件结构...
默认情况下,Shell对变量的处理视为字符串类型。因此,当我们需要进行数学运算时,需要采取特殊的方法来进行数值计算。本文将详细介绍在Shell中执行数学运算的各种方法及其注意事项。 #### 错误示范 1. **直接使用...
在IT行业中,Shell脚本是Linux/Unix系统中常用的一种自动化工具,用于处理文本文件、执行系统管理任务等。在Web服务器的运维中,分析web日志是非常常见的一项工作,例如,通过日志来了解服务器的性能指标,如连接...
最后,为了展示和分析结果,我们可能还需要将统计信息输出到文件,或者使用`awk`、`sort`和`uniq`等命令进行进一步的数据处理和分析。 总结起来,"flip-coin-combination"问题是一个结合了概率计算、组合分析和...