Linux Shell 命令--awk
说明:
awk被设计用于数据流,能够对列和行进行操作。而sed更多的是匹配,进行替换和删除。
awk有很多内建的功能,比如数组,函数等。灵活性是awk的最大优势。
awk的结构
}{i++}END{print i}' filename
工作原理
awk命令的工作方式如下:
1. 执行BEGIN{commands}语句块中的语句
2. 从文件或者stdin中读取一行,然后执行pattern{commands}. 迭代直到全部读取完毕
3. 最后执行END{commands}语句块
="$0,"$1="$1,"$2="$2,"$3="$3
;print "Summation:"}{print $1"+";sum+=1}END{print "==";print sum}'
还有另一种灵活的方法可以将多个外部变量传递给awk,例如:
- $var1="value1" var2="value2"
- $echo | awk '{print v1,v2}' v1=$var1 v2=$var2
如果来自文件
- awk '{print v1,v2}' v1=$var1 v2=$var2 filename
例4
$awk 'NR < 5' #行号小于5
$awk 'NR==1,NR==4' #行号在1到5之间的行
$awk '/linux/' #包含样式linux的行(可以用正则表达式指定样式)
$awk '!/linux/' #不包含样式linux的行
再介绍几个awk内置的字符串函数,也讲一部分。
length(string): //返回字符串的长度 index(string,serch_string): //返回search_string在字符串中出现的位置 split(string,array,delimiter): //用定界符生成一个字符串列表,并将该列表存入数组 substr(string,array,delimiter): //在字符串中用字符起止便宜量生成子串,并返回该子串 sub(regex,replacement_str,string): //将正则表达式匹配到的第一处内容替换成replacement_str gsub(regex,replacement_str,string): //和sub()类似。不过该函数会替换正则表达式匹配到的所有内容 match(regex,string): //检查正则表达式是否能够匹配字符串。如果能够匹配,返回非0值;否则,返回0.match()有两个相关的特殊变量,分别是RSTART喝RLENGTH。变量RSTART包含正则表达式所匹配内容的其实位置,而变量RLENGTH包含正则表达式所匹配内容的长度。
举例:
1.
- $ awk '{ sub(/test/, "mytest"); print }' testfile
在整个记录中匹配,替换只发生在第一次匹配发生的时候
2.
- $ awk '{ sub(/test/, "mytest"); $1}; print }' testfile
在整个记录的第一个域中进行匹配,替换只发生在第一次匹配发生的时候
3.
- $ awk '{ print index("test", "mytest") }' testfile
实例返回test在mytest的位置,结果应该是3
4.
- $ awk '{ print length( "test" ) }'
实例返回test字符串的长度。
本文出自:http://yjplxq.blog.51cto.com/4081353/964519
Linux Shell 命令--awk的更多相关文章
- 73条日常Linux shell命令汇总,总有一条你需要!
转载: 73条日常Linux shell命令汇总,总有一条你需要! 1.检查远程端口是否对bash开放: echo >/dev/tcp/8.8.8.8/53 && echo &q ...
- [Python2.x] 利用commands模块执行Linux shell命令
用Python写运维脚本时,经常需要执行linux shell的命令,Python中的commands模块专门用于调用Linux shell命令,并返回状态和结果,下面是commands模块的3个主要 ...
- Linux shell命令中expr
在Linux shell命令中expr虽然不是很起眼,但是它的作用是非常大的!到目前为止,我个人看来最大的作用就是两个——四则运算和字符串的操作. 先说四则运算,在Shell中四则运算不能简简单单的加 ...
- Linux/shell命令的实际应用——查看Port占用 netstat
启动1024端口一下,是需要root权限的 该Linux/shell命令主要用于解决: 1.查看某端口是否被占用: 2.查看某端口被哪个进程占用: 3.查看某个进程占用了哪些端口: 比如我tomcat ...
- java使用Runtime.exec()运行windwos dos或linux shell命令
使用Runtime.exec()运行windwos dos或linux shell命令,按实际情况具体测试 实例代码: package com.bookoo.test.command; imp ...
- 15个有趣好玩的linux shell 命令
今天介绍一些有趣的linux shell命令,所有的命令都可以使用man + 命令名称 来查看完整的使用方法. 1,figlet 字符画 figlet 可以将英文字符串以字符画的形式输出: >& ...
- 常用Linux Shell命令,了解一下!
目录 1 前言 2 正文 2.1 关机/重启 2.2 echo 2.3 vim文本编辑器 2.3.1 最基本用法 2.3.2 常用快捷键 2.3.3 查找/替换 2.4 拷贝/删除/移动/重命名 2. ...
- Java文件操作API功能与Windows DOS命令和Linux Shell 命令类比
Java文件操作API功能与Windows DOS命令和Linux Shell 命令类比: Unix/Linux (Bash) Windows(MS-DOS) Java 进入目录 cd cd - 创建 ...
- linux + shell 命令等
Linux命令[注意:建议用UltraEdit打开] 一.文件处理命令 1.命令格式与目录处理命令 ls –a[查看隐藏文件] ls –l[查看文件信息长格式显示] ls –d[查看指定目录的详细信息 ...
随机推荐
- init,initialize,initWithFrame,initWithCoder,awakeFromNib等区别
1.init 与initialize 对于iOS程序,创建几个类对象,就会调用几次init.下面分别重写 举例如下: 创建一个Person类,分别重写initialize和init方法 #import ...
- Ubuntu 16.04.4 LTS下安装JDK
写在前面 为什么我又装jdk?今天顺手升级了我的双系统中的ubuntu,开始的时候用的图形化界面升级,后来你懂的,升级软件死锁了.. 用命令行也没有效果了,提示锁被占用,手残重启试试,彻底崩了...我 ...
- Docker常见仓库MongoDB
MongoDB 基本信息 MongoDB 是开源的 NoSQL 数据库实现. 该仓库提供了 MongoDB 2.2 ~ 2.7 各个版本的镜像. 使用方法 默认会在 27017 端口启动数据库. $ ...
- 六星经典CSAPP-笔记(12)并发编程(上)
六星经典CSAPP-笔记(12)并发编程(上) 1.并发(Concurrency) 我们经常在不知不觉间就说到或使用并发,但从未深入思考并发.我们经常能"遇见"并发,因为并发不仅仅 ...
- Eclipse调试(2)——各种类型断点设置
本文是Eclipse调试(1)--基础篇 的提高篇.分两个部分: 1) Debug视图下的3个小窗口视图:变量视图.断点视图和表达式视图 2) 设置各种类型的断点 变量视图.断点视图和表达式视图 1. ...
- Lua语言模型 与 Redis应用
Lua语言模型 与 Redis应用 标签: Java与NoSQL 从 2.6版本 起, Redis 开始支持 Lua 脚本 让开发者自己扩展 Redis. 本篇博客主要介绍了 Lua 语言不一样的设计 ...
- Java异常处理-----非运行时异常(受检异常)
非运行时异常(受检异常) 如果出现了非运行时异常必须进行处理throw或者try{}catch(){}处理,否则编译器报错. 1:IOException 使用要导入包import java.io.IO ...
- SQL语言四大类
SQL语言四大类 SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL. 数据查询语言DQL 数据查询语言DQL基本结构是由SELECT子句, ...
- springMVC源码分析--动态样式ThemeResolver(二)
在上一篇博客springMVC源码分析--动态样式ThemeResolver(一)中我们介绍了多样式ThemeResolver的使用方法,接下来我们对源码进行简单的分析一下. ThemeResolve ...
- 集合框架之Queue接口
Queue接口 在处理元素前用于保存元素的 collection.除了基本的 Collection 操作外,队列还提供其他的插入.提取和检查操作.每个方法都存在两种形式:一种抛出异常(操作失败时),另 ...