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/passwd root:x:0:0:root: /root : /bin/bash bin:x:1:1:bin: /bin : /sbin/nologin daemon:x:2:2:daemon: /sbin : /sbin/nologin adm:x:3:4:adm: /var/adm : /sbin/nologin lp:x:4:7:lp: /var/spool/lpd : /sbin/nologin sync :x:5:0: sync : /sbin : /bin/sync shutdown :x:6:0: shutdown : /sbin : /sbin/shutdown halt:x:7:0:halt: /sbin : /sbin/halt mail:x:8:12:mail: /var/spool/mail : /sbin/nologin operator:x:11:0:operator: /root : /sbin/nologin [root@ipsan-node06 ~] # awk -F":" '{print $2,$(NF),$(NF-1),$(NF-3)}' /etc/passwd x /bin/bash /root 0 x /sbin/nologin /bin 1 x /sbin/nologin /sbin 2 x /sbin/nologin /var/adm 4 x /sbin/nologin /var/spool/lpd 7 x /bin/sync /sbin 0 x /sbin/shutdown /sbin 0 x /sbin/halt /sbin 0 x /sbin/nologin /var/spool/mail 12 x /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|uniq 1 34 1 49 2 45 2 48 3 54 3 57 3 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 49 2: 45 48 3: 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}' filename 2)打印文件的前两列(域) : awk '{print $1,$2}' filename 3)打印完第一列,然后打印第二列 : awk '{print $1 $2}' filename 4)打印文本文件的总行数 : awk 'END{print NR}' filename 5)打印文本第一行 : awk 'NR==1{print}' filename 6)打印文本第二行第一列 : 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.txt 123.122.123.12 12121212 121.2332.121.11 232323 255.255.255.255 21321 123.122.123.12 12121212 123.122.123.12 1212121er2 123.122.123.12 12121212eer 123.122.123.12 12121212ere 255.255.255.255 21321 121.2332.121.11 232323 255.255.255.255 21321 [root@jump-v4 ~] # cat a.txt|awk '{print $1}' 123.122.123.12 121.2332.121.11 255.255.255.255 123.122.123.12 123.122.123.12 123.122.123.12 123.122.123.12 255.255.255.255 121.2332.121.11 255.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 2 123.122.123.12 5 255.255.255.255 3 [root@jump-v4 ~] # cat a.txt|awk '{print $1}'|sort|uniq -c|awk '{print $2,$1}'|sort -k2 -rn 123.122.123.12 5 255.255.255.255 3 121.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/bash cd /data/log/resin && find /data/log/resin \( -name "*jvm-app-0.log.*" -a ! -name "*.gz" \) -a -mmin +30 - exec gzip {} \; [root@cdn ~] # crontab -l 0 * * * * /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这么多命令,通常会让初学者望而生 ...
随机推荐
- Dominator Tree & Lengauer-Tarjan Algorithm
问题描述 给出一张有向图,可能存在环,对于所有的i,求出从1号点到i点的所有路径上的必经点集合. 什么是支配树 两个简单的小性质—— 1.如果i是j的必经点,而j又是k的必经点,则i也是k的必经点. ...
- 洛谷 P4097 [HEOI2013]Segment 解题报告
P4097 [HEOI2013]Segment 题目描述 要求在平面直角坐标系下维护两个操作: 在平面上加入一条线段.记第 \(i\) 条被插入的线段的标号为 \(i\) 给定一个数 \(k\),询问 ...
- linux动态库与静态库混合连接
1, 在应用程序需要连接外部库的情况下,linux默认对库的连接是使用动态库,在找不到动态库的情况下再选择静态库.使用方式为: gcc test.cpp -L. -ltestlib 如果当前目录有 ...
- [学习笔记]prufer序列
前言 PKUWC和NOIWC都考察了prufer序列,结果统统爆零 prufer序列就是有标号生成树对序列的映射 prufer序列生成 每次选择编号最小的叶子删掉,把叶子的父亲加入prufer序列,直 ...
- es6数组的复制
数组是复合的数据类型,直接复制的话,只是复制了指向底层数据结构的指针,而不是克隆一个全新的数组. const a1 = [1, 2]; const a2 = a1; a2[0] = 2; a1 // ...
- mysql存储过程和常用流程控制
/* 该代码是创建了一个名叫"p4"的存储过程并设置了s1,s2,s3两个int型一个varchar型参数,还可以是其他数据类型,内部创建了x1,x2两个变量 DELIMITER是 ...
- 键盘监听事件KeyListener
说明:按下实体按键,相应虚拟按键变绿色,释放按键,变白色. public class Demo extends JFrame { private List<JButton> list; ...
- linux下怎样查看哪些进程占用swap空间
for i in `cd /proc;ls |grep "^[0-9]"|awk ' $0 >100'` ;do awk '/Swap:/{a=a+$2}END{print ...
- 【Maven】eclipse中使用Maven、生命周期
1.在eclipse中创建maven工程 >>在eclipse中配置maven: 配置maven版本:Eclips自带了一个maven,一般不用自带的这个,而选择我们安装的那个maven ...
- ARP协议原理学习
一.ARP的作用. 首先在window 的命令行中输入arp -a即可查看本机的arp缓存表.主机要发送数据包时,需要填充目的IP及其IP地址对应的MAC.当我们只有目的IP地址时,如何得到其对应的M ...