Linux下使用awk批量删除共享内存

原创 2015年07月10日 19:34:18

1.awk简介

awk 是一个强大的文本分析工具。sed 常常用于一整个行的处理,而 awk 则倾向于以空格和tab键为默认分隔符将每行切片成一个个域(也就是一列)来处理。awk适用于小型的数据处理.

awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 awk 的 GNU 版本。

2. awk语法格式

awk ‘pattern1{action1} pattern2{action2} …’ filename

awk 后面接两个单引号并加上大括号 {} 来对匹配模式的数据进行处理。 awk 可以处理后面指定的文件,也可以通过管道命令”|”读取来自前个命令的标准输出。

3.工作流程

awk工作流程是这样的:读入有’\n’换行符分割的多条记录,然后将每一条记录按指定的域分隔符划分域,填充域,0, 1表示第一个域,$n表示第n个域。默认域分隔符是空格键和tab键。

以last命令结合awk来演示awk一个简单的筛选输出。用 last 可以将登陆者的数据取出来,结果如下所示:
[root@lvlv]# last -n 4
root pts/1 192.168.1.100 Tue Feb 10 11:21 still logged in
root pts/1 192.168.1.100 Tue Feb 10 00:46 - 02:28 (01:41)
root pts/1 192.168.1.100 Mon Feb 9 11:41 - 18:30 (06:48)
dmtsai pts/1 192.168.1.100 Mon Feb 9 11:41 - 11:41 (00:00)

若我想要取出帐号与登陆者的 IP ,且帐号与 IP 之间以 [tab] 隔开,则会变成这样:
[root@lvlv]# last -n 4 | awk ‘{print $1 “\t” $3}’
root 192.168.1.100
root 192.168.1.100
root 192.168.1.100
dmtsai 192.168.1.100

4.利用awk批量删除共享内存

首先利用“ipcs –m”查看共享内存信息,然后再利用“ipcrm -m shmid”删除共享内存。利用awk进行批量删除共享内存的shell脚本如下:
ipcs -m|awk ‘$2~/[0-9]+/{print $2}’|
while read s
do
ipcrm -m $s
done

结合上面对awk的介绍,应该不难看懂脚本。awk ‘$2~/[0-9]+/{print $2}’表示打印出只含阿拉伯数字的每行的第二列,即共享内存标识。awk中正则表达式由两个斜杠包围,即/REG/,正则表达式前加上代字号(波浪号)~表示与之匹配,!~表示不匹配。因此,$2~/[0-9]+/表示只含有阿拉伯数字组成的共享内存ID。

参考文献

[1http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html

版权声明:感谢您对博文的关注!2017年秋季校招已经开始,有需要内推腾讯的可以QQ(1589276509)联系我哈,期待你的加入。

相关文章推荐

共享内存批量删除

Linux中通过API函数shmget创建的共享内存一般都是在程序中通过shmctl来释放的,但是有时为了调试程序,开发人员可能通过ctrl + c等方式来发送中断信号结束程序,这个时候,程序申请的共...

共享内存查看清除命令ipcs和ipcrm

今天发生一个问题,在重启****的时候,使用了start命令,结果程序无论如何启动不了,最后的解决方法: 查看transmit的日志没有结果,于是查看其下nohup.out,有如下输出: .......

手动删除shmget创建的共享内存

使用shmget创建或打开共享内存的时候,其中有一个参数是制定了权限的,这个权限类似于文件的权限。 指定了什么身份可以打开已经存在的共享内存。   在我的项目中出现了一个程序运行失败, 经过调查发...

linux 共享内存查看和删除

在使用共享内存的程序异常退出时,由于没有释放掉共享内存,在调试时会出现错误。您可以使用shell命令来查看与释放已经分配的共享内存,下面将详细说明如何进行查看和释放分配的共享内存的方法。 预备知识 ...

linux 下查看共享内存的使用以及删除共享内存

简单解释一下ipcs命令和ipcrm命令。取得ipc信息:ipcs [-m|-q|-s]-m 输出有关共享内存(shared memory)的信息-q 输出有关信息队列(message queue)的...

Linux共享内存的查看和删除

在使用共享内存的程序异常退出时,由于没有释放掉共享内存,在调试时会出现错误。您可以使用shell命令来查看与释放已经分配的共享内存,下面将详细说明如何进行查看和释放分配的共享内存的方法。 预备知识 ...

Linux下的IPC-共享内存的使用

共享内存是一种最快的IPC方法,除一些特殊情况外,它不能单独使用,需要配合信号量,关于信号量的使用将另文介绍,本文仅讨论共享内存的使用。 就mmap函数本身,使用很简单,下面是一个完整的示例。 #...
  • guxch
  • guxch
  • 2011-09-01 17:05
  • 1145

linux下使用共享内存实现客户端/服务器

在共享内存的使用中,顾名思义,就是实现多个进程中使用同一个内存区域来实现数据的通信。这样就可以实现一个简单的客户端/服务器程序啦。 共享内存使用的函数有下面几个:incldue#ifndef SHM...

Linux下通过共享内存进行进程间通信,进程间同步使用信号量来实现

Linux 环境下C编程指南,通过共享内存进行进程间通信的例子,进程间同步使用信号量来实现。、 书中有几个错误。。 使用说明:这是一个简单的服务器和客户端程序,如果启动程序时不带参数,则执...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)