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)联系我哈,期待你的加入。

查看ipc资源情况及其删除共享内存命令

查看ipc资源(消息队列、共享内存、信号量)使用ipcs命令其使用的方法如下: ipcs [-a -s -q -m] -i id默认的情况直接使用-a,会打印出所有的信息,需要查看信号量使用-s,消...

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

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

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

Linux 环境下C编程指南,通过共享内存进行进程间通信的例子,进程间同步使用信号量来实现。、 书中有几个错误。。 使用说明:这是一个简单的服务器和客户端程序,如果启动程序时不带参数,则执...

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

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

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

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

Linux共享内存的查看和删除

  • 2012年07月23日 17:00
  • 6KB
  • 下载

linux 共享内存简单使用

  • 2008年08月24日 17:40
  • 2KB
  • 下载

Linux下共享内存通信实现A进程死循环输出A后被C进程处理输出C

一.共享内存基本概念 共享内存是进程间通信中最简单的方式之一。 共享内存是系统出于多个进程之间通讯的考虑,而预留的的一块内存区。 共享内存允许两个或更多进程访问同一块内存,就如同 malloc(...

linux下进程间共享内存通信的问题

linux下进程间共享内存通信的问题 我在学习linux进程间的共享内存通信时,遇到了很多问题,就想把这些问题记下来,当做一个学习笔记。 我在学习老师给提供的两个进程间共享内存通信的例子时,时不时出现...
  • gwq5210
  • gwq5210
  • 2014年11月26日 17:02
  • 613

Linux下共享内存示例

首先创建一个公共的头文件 shm_com.h: #define TEXT_SZ 2048 typedef struct shared_use_st { int written_by_you...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux下使用awk批量删除共享内存
举报原因:
原因补充:

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