首页 > 其他分享 >16-1 文件处理三剑客置awk基本用法 16-2()16-3()

16-1 文件处理三剑客置awk基本用法 16-2()16-3()

时间:2023-07-04 11:48:37浏览次数:44  
标签:BEGIN 16 etc awk print centos8 root 三剑客

一、awk  BEGIN

[root@centos8 ~]#awk 'BEGIN{print "hello,awk"}'
[root@centos8 ~]#awk -F: '{print $1":"$3}' /etc/passwd
[root@centos8 ~]#df | awk -F "[[:space:]]+|%" '{print $5}' |sort -nr |head -n1
[root@centos8 ~]#ifconfig eth0 | sed -n '2p' | awk '{print $2}' sed -n '2p'--取行数

二、awk变量

1,常见的内置变量 FS   -v变量赋值

[root@centos8 ~]#awk -v FS=':' '{print $1FS$3}' /etc/passwd

2,OFS  输出

[root@centos8 ~]#awk -v FS=':' -v OFS="==" '{print $1,$3}' /etc/passwd

3,RS  输入记录的行

 [root@centos8 ~]#echo {a..z} | awk -v RS=' ' -v ORS='==' '{print $0}' 

4,NF 字段数量

[root@centos8 ~]#awk -v Fdf |awk -F'[ %]+' '{print $(NF-1)}' | sort -nr| head -n1

5,NR 记录的编号

[root@centos8 ~]#awk -F: '{print NR,$1}' /etc/passwd
[root@centos8 ~]#ifconfig eth0 | awk 'NR==2{print $2}'

6,FNR 个文件分别计数,记录的编号

[root@centos8 ~]#awk '{print FNR}' /etc/passwd /etc/os-release

  [root@centos8 ~]#awk '{print FNR,FILENAME}' /etc/passwd /etc/os-release

7,ARGC 命令行参数的个数

[root@centos8 ~]#awk '{print ARGV[1]}' /etc/passwd /etc/os-release 

8,自定义变量

[root@centos8 ~]#awk -v test1=test2="hello,gawk" 'BEGIN{print test1,test2}'
test2=hello,gawk 
[root@centos8 ~]#awk -v test1=test2="hello,gawk" 'BEGIN{test1=test2="hello";print test1}'
hello

9,printf 格式化输出

[root@centos8 ~]#awk -F: 'BEGIN{printf "------------------------------\n%-20s||%10s||\n-------------------------------\n","username","uid"}{printf "%-20s||%6d||\n------------------------------\n",$1,$3}END{print "结束"}' /etc/passwd 

取网卡IP两种方法

[root@centos8 ~]#ifconfig eth0 |awk '/netmask/{print $2}'
[root@centos8 ~]#ifconfig eth0 | sed -nr '/netmask/s/.* ([0-9.]+) +netmask.*/\1/p'

10,if-else条件判断

[root@centos8 ~]#awk -F: '{if($3<=100){print "<=,100",$3}else if ($3<=1000) {print "<=1000",$3} else{print ">=1000",$3}}' /etc/passw

 

11,switcht条件判断

 

12,while循环

[root@centos8 ~]#awk -v i=1 -v sum=0 'BEGIN{while(i<=100){sum+=i;i++};print sum}'
5050

1,length

[root@centos8 ~]#awk 'BEGIN{print length("abc")}'

2.for循环

[root@centos8 ~]#awk 'BEGIN{sum=0;for(i=1;i<=100;i++){sum+=i};print sum}'
[root@centos8 ~]#sum=0;i=1;while [ $i -le 100 ] ;do let sum+=i;let i++; done;echo $sum

3.next提前结束行的循环

[root@centos8 ~]#awk -F: '{if($3%2!=0) next; print $1,$3}' /etc/passwd

4,数组(默认是关联数组)

[root@centos8 ~]#awk '!line[$0]++' a.txt  去重

5.便利数组

[root@centos8 ~]#awk 'BEGIN{stu[1]="xiaozong";stu[2]="liuzong";stu[3]="sb";for(x in stu){print x":"stu[x]}}'

6.统计服务器链接状态出现的次数

[root@centos8 ~]#ss -nta |awk 'NR!=1{state[$1]++}END{for(i in state){print state[i],i}}'
[root@centos8 ~]#ss -nta |awk 'NR!=1{state[$1]++}END{for(i in state){print i,state[i]}}' 调整后写法
[root@centos8 ~]#ss -nta |awk 'NR!=1{print $1}' | sort |uniq -c 第二种写法

7,链接服务IP出现的次数

[root@centos8 ~]#ss -nt |awk -F"[ :]+" 'NR!=1{ip[ $(NF-2)]++}END{for(i in ip){print ip[i],i}}'| sort -nr

8.字符串处理 sub  gsub

[root@centos8 ~]#echo "2008:08:08" | awk 'sub(/:/,"-",$1)'
2008-08:08
[root@centos8 ~]#echo "2008:08:08" | awk 'gsub(/:/,"-",$1)'
2008-08-08

[root@centos8 ~]#awk 'BEGIN{print strftime("%Y-%m-%dT%H:%M",systime()-3600)}'
2023-07-04T10:24

 

 

标签:BEGIN,16,etc,awk,print,centos8,root,三剑客
From: https://www.cnblogs.com/liujinxi/p/17522364.html

相关文章

  • 第016课 Nand Flash操作原理及裸机程序分析
    第001节_NAND_FLASH操作原理NANDFLASH原理图NANDFLASH是一个存储芯片那么:这样的操作很合理”读地址A的数据,把数据B写到地址A”问1.原理图上NANDFLASH和S3C2440之间只有数据线,怎么传输地址?答1.在DATA0~DATA7上既传输数据,又传输地址当ALE为高电平时传输的是地址,那么在数据......
  • AtCoder Regular Contest 163 D Sum of SCC
    洛谷传送门AtCoder传送门怎么连这种相对传统的计数也不会……考虑换种方式描述强连通分量个数。考虑竞赛图缩点后存在一条极长的链,因此转化为把缩完点后的链劈成左右两个集合,使得左边集合不为空的方案数。于是我们现在只要统计点集\(A,B\)数量,满足\(A\ne\varnothing,A......
  • P3133 [USACO16JAN] Radio Contact G 无线电通话
    P3133[USACO16JAN]RadioContactG无线电通话目录P3133[USACO16JAN]RadioContactG无线电通话[USACO16JAN]RadioContactG题目描述输入格式输出格式样例#1样例输入#1样例输出#1提示思路后记题目传送门[USACO16JAN]RadioContactG题目描述FarmerJohnhaslost......
  • 19C-19.16 ORA-17503 ORA-27300 ORA-27301 ORA-27302
    ***alter日志告警2023-07-01T02:05:13.474592+08:00Errorsinfile/u01/app/oracle/diag/rdbms/dg/dg1/trace/dg1_ora_17925.trc:ORA-17503:ksfdopn:2Failedtoopenfile+DATA/dg/PASSWORD/pwddgORA-27300:OSsystemdependentoperation:openfailedwithstatus:13ORA-......
  • 【CF1621G】Weighted Increasing Subsequences 题解(优化树状数组)
    CF传送门|LG传送门。优化树状数组+反向处理。Solution发现直接做不好下手。难点主要在求出所有的上升子序列并计算它们分别的贡献。所以需要反向考虑每个单点在什么情况下产生贡献。一个单点会产生多少贡献。一个单点产生贡献的条件很容易得到。一个是在一个上升子序......
  • 题解 ARC163C【Harmonic Mean】
    没想出来什么优美的解法,来个乱搞。特判平凡情况\(n\le2\),其中\(n=1\)显然有\(1=\frac{1}{1}\),\(n=2\)无解。众所周知\(1=\frac{1}{2}+\frac{1}{4}+\frac{1}{8}+\cdots+\frac{1}{2^k}+\frac{1}{2^k}\)。注意到公式中除了\(\frac{1}{2^k}\)有重复外,其余项均无重复。容易......
  • 浅析C语言之uint8_t / uint16_t / uint32_t /uint64_t
    一、C语言基本数据类型回顾在C语言中有6种基本数据类型:short、int、long、float、double、char1、数值类型1)整型:short、int、long2)浮点型:float、double2、字符类型:char二、typedef回顾typedef用来定义关键字或标识符的别名,例如:typedefdoublewages;typedefwagessal......
  • Linux三剑客grep、sed、awk(包括练习题)
    Linuxgrep、sed、awk(包含练习题)一、grepLinuxgrep(globalregularexpression)命令用于查找文件里符合条件的字符串或正则表达式。基本用法与常见的正则表达式grep[options]pattern[files]命令 参数 匹配模式 文件数据 -i:忽略大小写进行匹配。 -v:反向查找,只......
  • 2024备考408Week16
    一、本周总结:使用时间:(离每周目标40h还差10h,差距还很大!)总计30h,数学12h50min,专业课12h9min,英语3h40min,政治1h21min。二、存在问题:1.数学、专业课(DS+OS+CO+CN)做题训练不够,思考不够深入,计算不够熟练和准确,后期一定要开始加强了;2.碎片化时间和整块时间没有合理安排,碎片化时间应该安排......
  • P7316 [COCI2018-2019#3] NLO
    考虑延续GDKOI普及组签到题的做法。先枚举\((x,y)\)考虑他会更新哪些节点,那么这个在GDKOI上是体现在一个差分上面。这里\(n\)很大而\(k\)很小,那么我们就可以考虑枚举\(n\)和\(k\),但是使用线段树来做。但是注意到一个事情,我们做区间赋值附的不是简单的$0/1$......