- 浏览: 1250375 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (461)
- 心得体会 (166)
- Hibernate (9)
- Spring (12)
- Struts1 (3)
- Ajax (4)
- Java (54)
- 其他技术 (21)
- 数据库 (29)
- EXT (0)
- Struts2 (7)
- Xml (3)
- HTML (5)
- JavaScript (12)
- 面试相关 (3)
- BLOG (11)
- 计算机 (11)
- PMP (0)
- OGNL (1)
- LINUX (79)
- AIX (1)
- Ubuntu (14)
- Android (1)
- hadoop (3)
- LINUX debian (3)
- 心得体会 eclipse (2)
- JSTL (1)
- 心得体会 hadoop cdh3u5 (2)
- maven (5)
- Hive (1)
- 心得体会 工具使用 (3)
- spring data jpa Query By Example(QBE) (1)
- nginx (2)
- Apache (1)
- mysql (6)
- LINUX mysql (2)
- freemaker (1)
- 心得体会 FastDFS Nginx 断点续传 (1)
- LINUX FastDFS Nginx 断点续传 (1)
- 心得体会 Mybatis (2)
- 心得体会 mysql (4)
- php (1)
- logback 简介 (5)
- EL (1)
- Tomcat (2)
- win7 (1)
- LINUX maven (1)
- scrumworks (1)
- linux nginx (6)
- svn linux (1)
- mac (3)
- mac git (1)
- git (1)
- nexus (2)
- golang (1)
- LINUX Redis (1)
- mac oracle (1)
最新评论
-
a785975139:
有用
MySQL Error :SHOW PROFILES -
yijiulove:
弄了半天,参照你的方法解决了.特来感谢,知道可能是先加载,但是 ...
Spring和Mybatis整合时无法读取properties的处理方案 -
chenjinqi1987:
Missing com.sun.jdmk:jmxtools:jar:1.2.1 -
leifeng2:
请问怎么使用,运行之后d盘符没有生产音频文件呢?
java录音程序 -
sundful:
chenghong726 写道你好,我也遇到你这样的问题,按照 ...
Spring和Mybatis整合时无法读取properties的处理方案
将每行后面都添加一个空行
awk '1; { print "" }'
这是怎么意思呢?一个单行awk命令,其实也是一个用awk语言写的程序,每个awk程序,都是由一系列的“匹配模式 { 执行动作 }”语句所组成的。在这个例子里面,有两个语句,“1”和“{print ””}”。在每个“匹配模式——执行动作”语句中,模式和动作都是可以被省略的。如果匹配模式被省略,那么预定的动作将会对输入文件的每一行执行。如果 动作被省略,那么就默认会执行{print }。所以,这个单行awk语句等同于下面的语句
awk '1 {print } {print ""}'
动作只有在匹配模式的值为真的时候才会执行。因为“1”永远为真,所以,这个例子也可以写成下面的形式
awk '{print } {print ""}'
awk中每条print语句后都默认会输出一个ORS变量(Output Record Separator,即输出行分隔符,默认为换行符)。第一个不带参数的print语句,等同于print $0,其中$0是代表整行内容的变量。第二个print语句什么也不输出,但是鉴于print语句后都会被自动加上ORS变量,这句的作用就是输出一个新行。于 是每行后面加空行的目的就达到了。
添加空行的另一种方法
awk 'BEGIN { ORS="\n\n" }; 1'
BEGIN是一个特殊的模式,后面所接的内容,会在文件被读入前执行。这里,对ORS变量进行了重新定义,将一个换行符改成了两个。后面的“1”,同样等 价于{print },这样就达到了在每行后用新的ORS添加空行的目的。
在每个非空的行后面添加空行
awk 'NF {print $0 "\n"}'
这个语句里面用到了一个新的变量,NF(number of fields),即本行被分割成的字段的数目。例如,“this is a test”,会被awk分割成4个词语,NF的值就为4。当遇到空行,分割后的字段数为0,NF为0,后面的匹配动作就不会被执行。这条语句,可以理解成“如果 这一行可以分割成任意大于0的部分,那么输出当前行以及一个换行符”。
在每行后添加两个空行
awk '1; {print "\n"}'
这一语句与前面的很相似。“1”可以理解为{print },所以整个句子可以改写为
awk '{print ; print "\n"}' 它首先输出当前行,然后再输出一个换行符以及一个结束print语句的ORS,也就是另外一个换行符。
为每个文件的内容添加行号
awk '{ print FNR "\t" $0 }'
这个awk程序在每行的内容前添加了一个变量FNR的输出,并用一个制表符进行分隔。FNR(File Number of Row)这个变量记录了当前行在当前文件中的行数。在处理下一个文件时,这个变量会被重置为0。
为所有文件的所有行统一添加行号
awk '{print NR "\t" $0}'
这一句与上一例基本一样,除了使用的行号变量是NR(Number of Row),这个变量不会在处理新文件的时候被重置。所以说,如果你有2个文件,一个10行一个12行,那这个变量会从1一直变到22。
用更漂亮的样式添加行号
awk '{printf("%5d : %s\n", FNR, $0)}'
这个例子用了printf函数来自定义输出样式,它所接受的参数与标准C语言的printf函数基本一致。需要注意的是,printf后不会被自动添加ORS,所以你 需要自己指定换行。这个语句指定了行号会右对齐,然后是一个空格和冒号,接着是当前行的内容。
为文件中的非空行添加行号
awk 'NF { $0=++a " :" $0}; {print }'
Awk的变量都是自动定义的:你第一次用到某个变量的时候它就自动被定义了。这个语句在每次遇到一个非空行的时候先把一个变量a加1,然后把a的数值 添加到行首,然后输出当前行的内容。
计算文件行数(模拟 wc -l)
awk 'END {print NR}'
END是另外一个不会被检验是否为真的模式,后面的动作会在整个文件被读完后进行。这里是输出最终的行号,即文件的总行数。
对每行求和
awk '{s=0;for (i=0;i<NF;i++) s=s+$i; print s}'
Awk有些类似C语言的语法,比如这里的for (;;;){ ... }循环。这句命令会让程序遍历所有NF个字段,并把字段的总和存在变量s中,最后输出s的数值并处理下一行。
对所有行所有字段求和
awk '{for (i=0;i<NF;i++) s=s+$i; END {print s+0}'
这个例子与上一个基本一致,除了输出的是所有行所有字段的和。由于变量会被自动定义,s只需要定义一次,故而不需要把s定义成0。另外需要注意的 是,它输出{print s+0}而非{print s},这是因为如果文件为空,s不会被定义就不会有任何输出了,输出s+0可以保证在这种情况下也会输出更有意义的0。
将所有字段替换为其绝对值
awk '{ for (i = 1; i <= NF; i++) if ($i < 0) $i = -$i; print }'
这条语句用了C语言的另外两个特性,一个是if (...) {...}结构,另外就是省略了大括号。它检查对每一行,检查每个字段的值是否小于0,如果值小于0,则将其改为正数。字段名可以间接地用变量的形式 引用,如i=5;$i='hello'会将第5个字段的内容置为hello。下面的是将这条语句完整的写出来的形式。print语句会在行中所有字段被改为正数后执行。
awk '{
for (i = 1; i <= NF; i++) {
if ($i < 0) {
$i = -$i;
}
}
}'
计算文件中的总字段(单词)数
awk '{total=total+NF};END {print total+0}'
这个命令匹配所有的行,并不断的把行中的字段数累加到变量total。执行完成上述动作后,输出total的数值。
输出含有单词Beth的行的数目
awk '/Beth/ {n++}; END {print n+0}'
这个例子含有两个语句。第一句找出匹配/Beth/的行,并对变量n进行累加。在/…/之间的内容为正则表达式,/Beth/匹配所有含有“Beth”的单词(它不仅 匹配Beth,同样也匹配Bethe)。第二句在文件处理完成后输出n的数值。这里用n+0是为了让n为0 的情况下输出0而不是一个空行。
寻找第一个字段为数字且最大的行
awk '$1 > max { max=$1; maxline=$0 }; END { print max, maxline }'
这个例子用变量max记录第一个字段的最大值,并把第一个字段最大的行的内容存在变量maxline中。在循环终止后,输出max和maxline的内容。注意:如 果在数字都为负数的情况下,这个例子就不能用了,下面的是修改过的版本
awk 'NR == 1 { max = $1; maxline = $0; next; } $1 > max { max=$1; maxline=$0 }; END { print max, maxline }'
在每一行前添加输出该行的字段数
awk '{print NF ":" $0}'
这个例子仅仅是在逐行输出字段数NF,一个冒号,以及该行的内容。
输出每行的最后一个字段
awk '{print $NF}'
awk里面的字段可以用变量的形式引用。这一句输出第NF个字段的内容,而NF就是该行的字段数。
打印最后一行的最后一个字段
awk '{ field = $NF };END {print field}'
这个例子用field记录最后一个字段的内容,并在循环后输出field的内容。
这里是一个更好的版本。它更常用、更简洁也更高效:
awk 'END {print $NF}'
输出所有字段数大于4的行
awk 'NF > 4'
这个例子省略了要执行的动作。如前所述,省略动作等价于{print}。
输出所有最后一个字段大于4的行
awk '$NF > 4'
这个例子用$NF引用最后一个字段,如果它的数值大于4,那么就输出
发表评论
-
springboot中spring.profiles.include的妙用
2019-09-30 10:03 1995我们有这样的一个spring ... -
java8--List转为Map、分组、过滤、求和等操作
2018-09-14 16:07 2812利用java8新特性,可以用简洁高效的代码来实现一些数据 ... -
intelliJ IDEA 文件修改之后的蓝色
2018-04-12 10:37 2435intelliJ IDEA链接svn之后,当文件发生修 ... -
Restful与webService区别
2018-02-13 09:59 773有好多人问我们在设计底层服务的时候到底是应该选 ... -
InputStream为什么不能被重复读取?
2017-07-17 14:36 949首先,熟悉Java的人可能都知道,Java中的Inputst ... -
CentOS6.5系统更改yum源为163
2016-11-16 16:49 6881、备份系统源 # cd /etc/yum.repos.d ... -
shell脚本----if(数字条件,字符串条件,字符串为空)
2016-04-07 17:58 1446二元比较操作符,比较变量或者比较数字. 注意数字与字符串的 ... -
shell bash判断文件或文件夹是否存在
2016-03-25 09:08 2046#shell判断文件夹是否存在 #如果文件夹不存 ... -
CentOS下SWAP分区建立及释放内存
2016-02-18 14:20 3669方法一: 一、查看系统当前的分区情况:>free - ... -
CentOS下挂载硬盘(fdisk,mkfs.ext4,mount)
2016-02-18 13:55 7104centos挂载硬盘 挂载硬盘步骤: 1. 先分区 ... -
七个对我最重要的职业建议
2015-12-17 13:19 570Nicholas C. Zakas 是全世 ... -
Linux保持SSH连接时间设置
2015-12-02 09:33 1048连接SSH服务器刚刚离开一会就断开,不得不需要反复连接服务器 ... -
Centos安装Vsftpd
2015-11-03 19:10 881安装部分摘自开源中国,最后红色部分解决无法登陆(cannot ... -
Linux使用jstat命令查看jvm的GC情况
2015-09-09 17:20 2215命令格式 jstat命令命令格式: jstat [Op ... -
在logback中配置mybatis显示sql
2015-07-08 11:56 1181第一种方式、直接在logback.xml配置文件中添加: ... -
git 删除远程分支
2015-06-25 14:58 1011一不小心把本地的临时分支push到server上去了,想要删除 ... -
如何从CPAN安装Perl模块
2015-06-11 11:20 1151Perl有一个从外部导入Perl模块的机制,从外部导入到Pe ... -
ubuntu - 下更改语言环境
2015-05-05 14:56 9652.server 对于使用ubuntu server版的朋友 ... -
shell判断文件是否存在
2015-04-29 19:54 15481. shell判断文件,目录是否存在或者具有权限 2. #! ... -
crontab命令的使用方法
2015-04-29 19:15 662crontab命令常见于Unix和Linux的操作系统之中, ...
相关推荐
AWK单行脚本快速参考
### sed与awk单行脚本快速参考指南 #### 一、文本间隔操作 **1.1 在每一行后面增加一空行** - **sed**: 使用`G`命令可以在每行后添加一行之前的内容,首次执行时为空,因此形成了空行效果。 - 示例命令:`sed G`...
下面将详细解释PDF文件中提到的一些常见AWK单行脚本知识点。 1. **打印每一行** - 使用`1`作为脚本可以直接打印输入的每一行,因为AWK默认的行为是如果表达式为真,则执行相应的动作(通常是打印当前行)。 - `'{...
下面将详细介绍文档中提到的一些AWK单行脚本知识点。 1. **模式匹配与打印**: - 在Unix环境下,`awk '/pattern/ {print "$1"}'` 会打印出匹配模式`pattern`的行的第一列。 - 在DOS/Win环境下,由于命令行解析...
- **SED**:通常用于执行简单的文本模式搜索和替换,命令行接口简洁明了,特别适合于单行脚本。 - **AWK**:提供更复杂的编程功能,如条件语句(if/else)、循环(for/while)等,更适合处理结构化数据和执行复杂的...
- **《SED_单行脚本快速参考》的_awk_实现**:这个标题表明文档旨在比较和展示如何使用`awk`来实现通常由`sed`执行的任务。`sed`(Stream Editor)是一种流编辑器,主要用于文本数据的格式化、过滤、替换等操作;而`...
Perl语言在这方面有着天然的优势,它不仅支持强大的正则表达式处理,还能在命令行环境中执行单行脚本,极大地简化了文件处理流程。 #### Perl单行脚本命令行选项详解 **-e选项** -e选项用于在命令行中直接执行Perl...
虽然 awk 是单行命令工具,但也可以编写复杂的脚本文件,通过`#!/usr/bin/awk -f`作为shebang行,使其成为可执行文件。此外,gawk提供了许多高级特性,如正则表达式扩展、自定义函数等。 总结,awk是Linux/Unix环境...
- **单行命令调用**:`awk 'pattern {action}' filename1 filename2` - **脚本文件调用**:`awk -f myscript.awk filename1 filename2` - **直接执行脚本**:在脚本文件中添加执行权限并指定解释器路径(如 `#!/bin/...
根据给定的部分内容,我们可以看到一个具体的awk脚本,名为`strip_c_comment.awk`,用于去除C语言中的注释。下面是对这个脚本的逐行解析: #### 行01-02:脚本头信息 这包括脚本的名称和执行方式。 #### 行04-29:...
Sed和Awk是UNIX和Linux系统中极为重要的流编辑器和文本处理工具,它们能够通过简单的命令或脚本高效处理文本文件,实现复杂的文本转换和报告生成。接下来,我们将根据提供的文件内容详细地说明Sed和Awk的关键知识点...
行动语句是AWK脚本的核心组成部分,用于定义如何处理符合特定条件的数据行。例如: - **打印**:`{ print }` - **变量赋值**:`{ var = "value" }` ##### 2.2 数组 (Arrays) AWK支持多种类型的数组,包括: - **...
1. **单行命令模式**:如`awk '{print $1}' file`,直接在命令行输入,适合简单的数据处理。 2. **脚本模式**:通过`awk -f progfile file`调用预先编写好的AWK脚本文件,适用于复杂的数据处理逻辑。 3. **内嵌模式*...
通过这些案例,我们可以看到sed和awk这两个强大的文本处理工具在Linux shell脚本中的广泛应用。sed作为一个流编辑器,擅长于对单行文本进行快速处理和转换,而awk则是一个更复杂的文本分析工具,适用于将文本文件...
在Linux环境中,使用awk脚本来处理文本或代码是非常常见的做法。在本案例中,我们看到一个awk脚本,其目的是用于去除C语言源代码中的注释。 **脚本核心功能:** 1. **移除单行注释:** 单行注释是以`//`开始的注释...
- `sed` 更适合处理单行文本,主要用于文本查找、替换、删除等简单操作。 - `awk` 更侧重于处理多行文本,尤其是具有结构化的数据处理,支持更复杂的表达式和计算。 - `sed` 不支持变量和复杂的逻辑控制,而 `awk...
在执行sed部分,手册详细介绍了如何在单行内执行多个命令,如何创建sed脚本文件,以及如何使用sed注释和作为命令解释器使用。 sed附加命令部分,涉及追加、插入、修改、打印不可见字符、打印行号、转换字符、操作多...