awk 命令:
1、
打印行号和内容:
awk '{print NR":"$0}'
2、
输出:偶数行和奇数行到文件
awk '{print $0.txt > NR%2.txt}' file
3、
打印出奇数行内容:(三者等价)
awk 'NR%2==1' file
awk 'NR%2' all_file.txt
awk 'i=!i' file
打印出偶数行的内容:(三者等价)
awk 'NR%2==0' file
awk '!(NR%2)' file
awk '!(i=!i)' file
sed 命令:
打印出奇数行:
sed -n '1~2p' file
打印出偶数行:
sed -n '2~2p' file
扩展内容:
一. 行距:
1. 每行间加一个空行
awk '1; { print "" }' filname.ext #输出当前行,在输出一个空行
awk '1 { print } { print "" }' filname.ext
awk '{ print } { print "" }' filname.ext
2. 1的另外一种实现方法:
awk 'BEGIN { ORS="\n\n" }; 1' filname.ext #预先设置每一行的分隔符号为两个换行;你可以尝试把ORS设置为其他的看看效果如何
3. 仅输出非空行,并每行间在加一个空行
awk 'NF { print $0 "\n" }' filname.ext #NF表示当前行的字段数,$0表示当前行,最后再加一个换行
4. 双倍行距;没行间两个空行
awk '1; { print "\n" }' filname.ext #默认输出后会换行的,输出\n,则会输出两个空白行
等同于:
awk '{ print; print "\n" }' filname.ext
5. 显示当前行在所在文件中的行号
awk '{ print FNR "\t" $0 }' filname.ext #FNR,表示当前行在文件中的行号
6. 显示当前行在本次处理过程中的行号
awk '{ print NR "\t" $0 }' filname.ext #NR,表示当前行在本次处理过程中的行号
小疑问:为啥有FNR和NR的差别呢?效果不都是一样么? 如果你给如:filname1.ext filname2.ext,你就会看到差别了。原来:FNR,是每个文件中的,换了一个文件,会归零;而NR则每个文件会累加起来的
7. 使用简单样式来输出
awk '{ printf("] : %s\n", NR, $0) }' filname.ext #行号占用5位,不足补空格
8. 显示非空行
awk 'NF { $0=++a " :" $0 }; { print }' filname.ext
#NF前面说了,表示当前行的行号,此处用他作为条件,如果是空行,则NF为0,跳过;否则,用动态变量a存储非空行的数目
9. 计算行数:效果类似wc -l
awk 'END { print NR }' filname.ext #END表示每行都处理完了后,在执行,此时NR就是最后一行的行号,也就是总的行数了。
10. 计算每一行的和
awk '{ s = 0; for (i = 1; i <= NF; i++) s = s+$i; print s }' filname.ext
#s用作每行和的累加,从1到NF(每行总的字段数),依次累加
11. 计算文件中所有字段的和
awk '{ for (i = 1; i <= NF; i++) s = s+$i }; END { print s }' filname.ext
#s用作总和的累加,每行都处理完成了,再输出s;注意和10对比,此处没有每行清零,所以累加了。没有设置的变量,默认为空,但是会根据上下文数值计算情况自动变为0
12. 将每个字段用其绝对值代替
awk '{ for (i = 1; i <= NF; i++) if ($i < 0) $i = -$i; print }' filname.ext
#$i表示当前行中的字段,$0表示当前行,可以改变$i的值
13. 计算文件中总的字段和(例如计算单词数)
awk '{ total = total + NF }; END { print total }' filname.ext
14. 计算匹配指定信息的总行数
awk '/Linux/ { n++ }; END { print n+0 }' filname.ext
15. 找到文件中每行第一个字段中,最大的数,以及其所在的行
awk '$1 > max { max=$1; maxline=$0 }; END { print max, maxline }' filname.ext
#用max存储最大的数,maxline存储最大数所在的行,并在最后输出
16. 显示当前行的字段数,并输出当前行
awk '{ print NF ":" $0 } ' filname.ext
17. 显示每行最后一个字段的内容
awk '{ print $NF }' filname.ext#NF表示当前行的字段数,例如为3,则$NF,就是$3,也就是第三个字段了
18. 显示最后一行的最后一个字段
awk '{ field = $NF }; END { print field }' filname.ext
#每行处理没有输出,尽在最后输出,field作为每行的最后一行的暂存变量
19. 显示字段数小于4的行
awk 'NF < 4' filname.ext#{}以外的内容,作为条件,没有{},则默认输出当前行
20. 显示每行的最后一个字段小于4的行
awk '$NF < 4' filname.ext#注意和19对比
linux利用grep查看打印匹配的下几行或前后几行的命令
转自:http://www.itokit.com/2013/0308/74883.html linux系统中,利用grep打印匹配的上下几行 如果在只是想匹配模式的上下几行,grep可以实现. ...
linux命令(49):显示文件的指定行,打印中间几行
linux 如何显示一个文件的某几行(中间几行) [一]从第3000行开始,显示1000行.即显示3000~3999行 cat filename | tail -n +3000 | head -n 1 ...
linux 命令——39 grep (转)
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达 ...
如何在java程序中调用linux命令或者shell脚本
转自:http://blog.sina.com.cn/s/blog_6433391301019bpn.html 在java程序中如何调用linux的命令?如何调用shell脚本呢? 这里不得不提到ja ...
Linux命令行和shell编程
Shell Shell是一个程序,用户输入的命令通过shell来传达给内核或其它程序.用户在linux打开一个终端,终端就会自动调用用户的shell. Linux上的Shell有很多种,用的最多是sh ...
常用linux命令及shell脚本
参考:Linux命令大全 分割大文件 Split命令 按行分割(只能是文本文件) $split -l 1000 big_file 前缀 按文件大小分割 $split -b 64m big_file 前 ...
Linux命令与Shell
Linux 目录结构及解释 查看命令行执行完位置: echo $BASH 命令记录 mkdir mkdir命令 用来创建目录. 语法:mkdir (选项)(参数) 主要选项: -m
每天一个linux命令(39)--ifconfig命令
许多人非常熟悉Windows下的ipconfig 命令行工具,它被用来获取网络接口配置信息并对此进行修改.Linux系统拥有一个类似的工具,也就是ifconfig(interfaces config ...
Linux命令行和Shell高效率使用方法
Ctrl+R快速搜索history Ctrl+P显示上一条命令 快速执行一条history命令:!!/!-number ======================================== ...
随机推荐
bzoj 1012 维护一个单调数列
Description 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作.语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值.限制:L不超过当前数列的长度. 2. ...
PHP 扩展库
表 6.1. PHP 扩展库 扩展库 说明 注解 php_bz2.dll bzip2 压缩函数库 无 php_calendar.dll 历法转换函数库 自 PHP 4.0.3 起内置 php_cpdf ...
复习IOS多线程知识
线程的注意点 1.不要同时开太多的线程(1~3条线程即可,不要超过5条) 2.线程概念 * 主线程 : UI线程,显示.刷新UI界面,处理UI控件的事件 * 子线程 : 后台线程,异步线程 3.不要把 ...
Android 画直线并实现拖动
自定义View,在onDraw()方法中绘制一条直线,在onTouch()方法中监听手指的移动. public class AroundDragView extends View implements ...
No CurrentSessionContext configured 异常解决
Exception in thread "main" org.hibernate.HibernateException: No CurrentSessionContext conf ...
android 实现倒影
首先,文章中出现的Gallery 已经不再适用,替代方法请看我的另一篇文章http://blog.csdn.net/xiangzhihong8/article/details/51120460 不过对 ...
常见jquery面试题
jQuery 面试问题和答案 JavaScript 是客户端脚本的标准语言,而 jQuery 使得编写 JavaScript 更加简单.你可以只用写几行的jQuery 代码就能实现更多的东西. 它是最 ...
[原创.数据可视化系列之八]使用等d3进行灰度图转伪彩色
对灰度图进行彩色化是数据可视化中常见的需求,使用d3在客户端比较容易实现,本文使用d3生成图片,并显示: 代码如下: 代码中首先下载数据文件,然后设定d3的色带信息,生成一个空白的canvas元素,并 ...
PHP 设计模式六大原则
http://www.cnblogs.com/yujon/p/5536118.html 设计模式六大原则(1):单一职责原则 不要存在多于一个导致类变更的原因.通俗的说,即一个类只负责一项职责 设计模 ...
查看linux服务器CPU数量
首先,要区分两个概念:物理CPU和逻辑CPU. 物理CPU就是服务器上实际安装的CPU.但是一个物理CPU可以有多个核.例如,一个 i5 760 是双核,而一个 i5 2250 是四核.如果开启了In ...