shell脚本,awk实现文件a的每行数据与文件b的相对应的行的值相减,得到其绝对值。
解题思路
文件 shu 是下面这样的。
220 34 50 70
553 556 32 21
1 1 14 98 33
文件 jian是下面这样的。
10
8
2
想要得到结果是下面这样的。
210 24 40 60
545 548 24 13
1 1 12 96 31
用awk来得到想要的结果
[root@localhost study]# awk 'NR==FNR{a[NR]=$1;next}NR!=FNR{for(i=1;i<=NF;i++){$i>a[FNR]?$i=$i-a[FNR]:$i=a[FNR]-$i}}1' jian shu
210 24 40 60
545 548 24 13
1 1 12 96 31
分析上述步骤
NR==FNR 处理第一个文件 next起到跳过的作用。
a[NR]=$1
a[1]=10
a[2]=8
a[3]=2
NR!=FNR 处理第二个文件
for(i=1;i<=NF;i++) 遍历输出 1,2,3,4
$i>a[FNR]?$i=$i-a[FNR]:$i=a[FNR]-$i 这个相当于三目运算 如 3>1?a=1:a=2 这个表示的是当3大于1时,输出1,否则输出2
第二个文件先处理第一行
$1>a[1]?$1=$1-a[1]:$1=a[1]-$1 ----> 220大于10,因此执行220-10=210
$2>a[1]?$2=$2-a[1]:$2=a[1]-$2 ----> 34大于10,因此执行34-10=24
$3>a[1]?$3=$3-a[1]:$3=a[1]-$3 ----> 50大于10,因此执行50-10=40
$4>a[1]?$4=$4-a[1]:$4=a[1]-$4 ----> 70大于10,因此执行70-10=60
然后在处理第二行
$1>a[2]?$1=$1-a[2]:$1=a[2]-$1 ----> 545大于8,因此执行553-8=545
$2>a[2]?$2=$2-a[2]:$2=a[2]-$2 ----> 556大于8,因此执行556-8=548
$3>a[2]?$3=$3-a[2]:$3=a[2]-$3 ----> 32大于8,因此执行32-8=24
$4>a[2]?$4=$4-a[2]:$4=a[2]-$4 ----> 21大于8,因此执行21-8=13
最后处理第三行
$1>a[3]?$1=$1-a[3]:$1=a[3]-$1 ----> 1小于2,因此执行2-1=1
$2>a[3]?$2=$2-a[3]:$2=a[3]-$2 ----> 1小于2,因此执行2-1=1
$3>a[3]?$3=$3-a[3]:$3=a[3]-$3 ----> 14大于2,因此执行14-2=12
$4>a[3]?$4=$4-a[3]:$4=a[3]-$4 ----> 98大于2,因此执行98-2=96
$4>a[3]?$4=$4-a[3]:$4=a[3]-$4 ----> 33大于2,因此执行33-2=31
所以就输出了
210 24 40 60
545 548 24 13
1 1 12 96 31
shell脚本,awk实现文件a的每行数据与文件b的相对应的行的值相减,得到其绝对值。的更多相关文章
- Java代码调用Shell脚本并传入参数实现DB2数据库表导出到文件
本文通过Java代码调用Shell脚本并传入参数实现DB2数据库表导出到文件,代码如下: import java.io.File; import java.io.IOException; import ...
- shell脚本 awk工具
awk工具概述awk编程语言/数据处理引擎基于模式匹配检查输入文本,逐行处理并输出通常在shell脚本中,或取指定的数据单独用时,可对文本数据做统计 命令格式格式一:awk [选项] '[条件]{编辑 ...
- shell脚本 awk实现实时监控网卡流量
一.简介 通过第3方工具获得网卡流量,这个大家一定很清楚.其实通过脚本一样可以实现效果.下面是我个人工作中整理的数据.以下是shell脚本统计网卡流量. 现原理: cat /proc/net/dev ...
- shell脚本——awk
目录 一.awk 1.1.awk简介 1.2.基本格式 1.3.工作原理 1.4.常见的内建变量(可直接用) 按字段输出文本 1.5.awk和getline 有重定向符 无重定向符 1.6.指定分隔符 ...
- 将shell脚本的执行过程和执行结果导入到log文件中
[root@localhost scripts]# vim ping.sh #!/bin/bash set -x ##分步执行 exec &> /tmp/log.txt ##脚本执行的过 ...
- php总结7——文件函数库、序列化数据、文件包含
7.1 文件函数库 php用来操作文件的 1) fopen 代开文件或URL 格式:resource fopen(string $filename, string $mode) 'r' 只读方式 ...
- shell脚本awk的基本用法
AWK 1 AWK 2 3 linux取IP地址 4 5 ifconfig | grep -w inet | sed -n '1p' | awk '{print $2}' 6 7 eg: 8 9 aw ...
- Shell脚本逐行读取文本内容并拆分,根据条件筛选文件
时间:2018-11-13 整理:byzqy 需求: 最近帮朋友写了一段脚本,他的需求是根据一份产品清单,去服务器上捞取对应产品编号的测试Log,数量大概有9000~10000条左右.文本内容大致如下 ...
- shell脚本 awk实现查看ip连接数
一.简介 处理文本,是awk的强项了. 无论性能已经速度都是让人惊叹! 二.使用 适用:centos6+ 语言:英文 注意:无 awk 'BEGIN{ while("netstat -an& ...
随机推荐
- Codevs 1523 地精部落
1523 地精部落 省队选拔赛 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 大师 Master 题解 题目描述 Description 传说很久以前,大地上居住 ...
- C - Heavy Transportation
//改版dijkstra #include <iostream> #include <algorithm> #define Faster ios::sync_with_stdi ...
- 51Nod 1242 斐波那契数列的第N项(矩阵快速幂)
#include <iostream> #include <algorithm> using namespace std; typedef long long LL; ; ; ...
- Log4j2 - Unable to invoke factory method in class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFileAppender for element RollingFile
问题与分析 在使用Log4j2时,虽然可以正确读取配置文件并生成log文件,但偶然发现控制台打印了异常信息如下: 2018-12-31 17:28:14,282 Log4j2-TF-19-Config ...
- nginx之location、rewrite配置
https://www.cnblogs.com/koal/p/6915106.html rewrite 地址重写 如上配置对于: /images/ttt/test.png 会重写到/mic?file ...
- socketserver+socket实现较为复杂的ftp,支持多用户在线
客户端(ftp_client.py) import socketserver,json,hashlib,os from pymongo import MongoClient ''' *****要点** ...
- UVA10305:Ordering Tasks(拓扑排序)
John has n tasks to do. Unfortunately, the tasks are not independent and the execution of one task i ...
- HTML 5的革新——语义化标签(二)
HTML 5的革新之一:语义化标签二文本元素标签.分组元素标签. HTML 5的革新——语义化标签(一)中介绍了一些HTML5新加的一些节元素,一张页面中结构元素构成网页大体,但是也需要其他内容来填充 ...
- Sublime的用法
一.首先安装插件 1.安装Package Control,这是为了安装其他插件做基础,它可以方便我们下载其他插件 (1).按Ctrl+`调出console(注:避免热键冲突) (2).粘贴以下代码到命 ...
- 盒子模型--IE与标准
从上图可以看到标准 W3C 盒子模型的范围包括 margin.border.padding.content,并且 content 部分不包含其他部分. 从上图可以看到 IE 盒子模型的范围也包括 ma ...