awk技巧【转】
转自 awk技巧(如取某一行数据中的倒数第N列等) - 散尽浮华 - 博客园 https://www.cnblogs.com/kevingrace/p/8481965.html
使用awk取某一行数据中的倒数第N列:$(NF-(n-1))
比如取/etc/passwd文件中的第2列、倒数第1、倒数第2、倒数第4列(以冒号为分隔符)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
[root@ipsan-node06 ~]# cat /etc/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhalt:x:7:0:halt:/sbin:/sbin/haltmail:x:8:12:mail:/var/spool/mail:/sbin/nologinoperator:x:11:0:operator:/root:/sbin/nologin[root@ipsan-node06 ~]# awk -F":" '{print $2,$(NF),$(NF-1),$(NF-3)}' /etc/passwdx /bin/bash /root 0x /sbin/nologin /bin 1x /sbin/nologin /sbin 2x /sbin/nologin /var/adm 4x /sbin/nologin /var/spool/lpd 7x /bin/sync /sbin 0x /sbin/shutdown /sbin 0x /sbin/halt /sbin 0x /sbin/nologin /var/spool/mail 12x /sbin/nologin /root 0 |
linux实现将文本文件每一行中相同第一列对应的其他列进行拼接
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
[root@jump-v4 ~]# sort b.txt|uniq1 341 492 452 483 543 573 89[root@jump-v4 ~]# sort b.txt|uniq|awk '{a[$1]=(a[$1]" "$2);} END{for(i in a) print i ":"a[i]}' 1: 34 492: 45 483: 54 57 89命令解析:1)首先sort test|uniq实现对test文件的去重,去掉了重复的 1 49,保留不同的行;2)awk '{a[$1]=(a[$1]" "$2);} END{for(i in a) print i ":"a[i]}' 表示的含义是: 将每一行的第一列最为数组a的key, 第二列作为a的value,同时碰到相同的key,就把其值进行拼接,linux的shell的字符串拼接形式为str = (str “ ” $var), 最后遍历数组a,其中i为数组a的每一个key,a[i]为key对应的值; |
使用awk命令获取文本的某一行,某一列的技巧:
|
1
2
3
4
5
6
|
1)打印文件的第一列(域) : awk '{print $1}' filename2)打印文件的前两列(域) : awk '{print $1,$2}' filename3)打印完第一列,然后打印第二列 : awk '{print $1 $2}' filename4)打印文本文件的总行数 : awk 'END{print NR}' filename5)打印文本第一行 :awk 'NR==1{print}' filename6)打印文本第二行第一列 :sed -n "2, 1p" filename | awk 'print $1' |
Awk取文件中的指定数据
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
[root@jump-v4 ~]# cat a.txt123.122.123.12 12121212121.2332.121.11 232323255.255.255.255 21321123.122.123.12 12121212123.122.123.12 1212121er2123.122.123.12 12121212eer123.122.123.12 12121212ere255.255.255.255 21321121.2332.121.11 232323255.255.255.255 21321[root@jump-v4 ~]# cat a.txt|awk '{print $1}'123.122.123.12121.2332.121.11255.255.255.255123.122.123.12123.122.123.12123.122.123.12123.122.123.12255.255.255.255121.2332.121.11255.255.255.255[root@jump-v4 ~]# cat a.txt|awk '{print $1}'|sort|uniq -c 2 121.2332.121.11 5 123.122.123.12 3 255.255.255.255[root@jump-v4 ~]# cat a.txt|awk '{print $1}'|sort|uniq -c|awk '{print $2,$1}'121.2332.121.11 2123.122.123.12 5255.255.255.255 3[root@jump-v4 ~]# cat a.txt|awk '{print $1}'|sort|uniq -c|awk '{print $2,$1}'|sort -k2 -rn123.122.123.12 5255.255.255.255 3121.2332.121.11 2 |
linux文件按大小来排序
|
1
2
3
4
5
6
|
[root@cdn ~]# ls -s | sort -k 1 -n表示对第一个字段(即文件大小)按数值大小进行排序;如果想倒序,可以增加-r参数;sort命令可进行排序;-k参数表示对第几个字段进行排序;ls -s:第一列显示的是文件大小 |
定时删除resin日志的脚本,每小时删除一次
|
1
2
3
4
5
6
|
[root@cdn ~]# cat resin-log.sh#!/bin/bashcd /data/log/resin && find /data/log/resin \( -name "*jvm-app-0.log.*" -a ! -name "*.gz" \) -a -mmin +30 -exec gzip {} \;[root@cdn ~]# crontab -l0 * * * * /bin/bash -x /root/resin-log.sh >/dev/null 2>&1 |
awk技巧【转】的更多相关文章
- Linux生产环境上,最常用的一套“AWK“技巧【转】
最有用系列: <Linux生产环境上,最常用的一套“vim“技巧> <Linux生产环境上,最常用的一套“Sed“技巧> <Linux生产环境上,最常用的一套“AWK“技 ...
- awk技巧(如取某一行数据中的倒数第N列等)
使用awk取某一行数据中的倒数第N列:$(NF-(n-1))比如取/etc/passwd文件中的第2列.倒数第1.倒数第2.倒数第4列(以冒号为分隔符) [root@ipsan-node06 ~]# ...
- awk技巧 nginx access.log
1.1 介绍 awk其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母.实际上 AWK 的确拥有自己的语言: AWK ...
- awk技巧
1通过awk脚本执行awk程序:awk-f program_file_name input_files #!/bin/awk -f BEGIN { print "What is your n ...
- vi,sed,tr,awk技巧
将文件中的换行替换为逗号 使用sed: sed -e :a -e N -e '$!ba' -e 's/\n/,/g' filename 使用tr: cat filename | tr '\n' ',' ...
- 使用awk格式化输出文本
注意:本文并不是一篇awk入门文章,而是偏重实例讲解 awk借鉴了c语法,因此awk在许多地方还保留有c语言的痕迹,比如printf语句:for,if的语法结构等 介绍 最简单地说,AWK 是一种用于 ...
- 常用shell脚本命令
常用shell脚本命令 1.显示包含文字aaa的下一行的内容: sed -n '/aaa/{n;p;}' filename 2.删除当前行与下一行的内容: sed -i '/aaa/{N;d;}' f ...
- Linux上,最常用的一批命令解析(10年精选)
Linux这么多命令,通常会让初学者望而生畏.下面是我结合日常工作,以及在公司的内部培训中,针对对Linux不是很熟悉的同学,精选的一批必须要搞懂的命令集合.任何一个命令其实都是可以深入的,比如tai ...
- 【转帖】Linux上,最常用的一批命令解析(10年精选)
Linux上,最常用的一批命令解析(10年精选) https://juejin.im/post/5d134fbfe51d4510727c80d1 写的挺好呢 Linux这么多命令,通常会让初学者望而生 ...
随机推荐
- synchronized的实现原理与应用
Java代码在编译后会变成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上执行,Java中所使用的并发机制依赖于JVM的实现和CPU的指令. sync ...
- A1025. PAT Ranking
Programming Ability Test (PAT) is organized by the College of Computer Science and Technology of Zhe ...
- 网络编程——socket(四十三)
http://www.cnblogs.com/linhaifeng/articles/6129246.html#_label7 http://www.cnblogs.com/linhaifeng/ar ...
- Linux中的Diff和Patch
本文主要记录两个命令的学习情况:diff 和 patch.diff 和 patch 是一对工具,使用这对工具可以获取更新文件与历史文件的差异,并将更新应用到历史文件上.在数学上说,diff就是对两个集 ...
- HTTP协议和SOCKS5协议
HTTP协议和SOCKS5协议 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们平时上网的时候基本上是离不开浏览器的,尤其是搜索资料的时候,那么这个浏览器是如何工作的呢?用的又是 ...
- 函数和常用模块【day05】:不同目录间进行模块调用(八)
本节内容 1.背景 2.函数功能解释 3.绝对路径和相对路径 4.不同目录间进行模块调用 一.背景 之前写了软件开发目录规范这篇博客,相信很多人都已经知道,我们在写程序时需要遵循一定的规范,不然,就算 ...
- 网络编程基础【day09】:解决socket粘包之大数据(七)
本节内容 概述 linux下运行效果 sleep解决粘包 服务端插入交互解决粘包问题 一.概述 刚刚我们在window的操作系统上,很完美的解决了,大数据量的数据传输出现的问题,但是在Linux环境下 ...
- ruby pluck用法,可以快速从数据库获取 对象的 指定字段的集合数组
可以快速从数据库获取 对象的 指定字段的集合数组 比如有一个users表,要等到user的id数组: select id from users where age > 20; 要实现在如上sql ...
- liunx必知必会(1)
一.liunx目录结构: (1)/bin中 - 用户二进制文件 包含二进制可执行文件. 在单用户模式下,你需要使用的常见Linux命令都位于此目录下.系统的所有用户使用的命令都设在这里. (2)/sb ...
- vuex2.0源码分析
当我们用vue在开发的过程中,经常会遇到以下问题 多个vue组件共享状态 Vue组件间的通讯 在项目不复杂的时候,我们会利用全局事件bus的方式解决,但随着复杂度的提升,用这种方式将会使得代码难以维护 ...