sed的基本操作

sed 's/a/b/g' 文件a 把文件a中的a修改成b 注意这只是临时的

注:s就是所有的意思,g是缓存区的意思

sed -i 's/a/b/g' 文件a 把文件a中的a修改成b 这是修改了文件中的

sed -i's/^/&a/g' 文件b 在文件b中的每一行的开头增加1个a

sed -i 's/$/a/g' 文件b 在文件b中的每一行的结尾增加1个a

sed -i'/weimengle/a xxxx' 文件b 在文件b中找到weimengle,在weimengle这一行之后添加xxxx

注:a就是after的缩写

sed -i'/weimengle/i xxxx' 文件b 在文件b中找到weimengle,在weimengle这一行之前添加xxxx

sed -n'/weimengle/p' 文件b 在文件b中找到weimengle这一行并打印出来

注:p就是print的缩写

sed -n '1p' 文件b 打印文件b中的第一行

sed -n '1,2p' 文件b 打印文件b中的第一行到第五行

sed删除文件中的内容

如果是要删除第三行:

sed -i '3d' 1.txt

注:d就是delete的缩写

如果删除以Love开头的行

sed -i '/^Love/d'1.txt

删除包含Love的行

sed -i '/Love/d'1.txt

awk中的循环和判断语句

awk条件语句

条件语句

awk中的条件语句是从C语言中借鉴过来的,可控制程序的流程。

if语句

格式:

{if (expression){

statement; statement; ...

}

}



$ awk '{if ($1 <$2) print $2 "too high"}' test。如果第一个域小于第二个域则打印。

$ awk '{if ($1 < $2) {count++; print "ok"}}' test.如果第一个域小于第二个域,则count加一,并打印ok。

 if/else语句,用于双重判断。

格式:

{if (expression){

statement; statement; ...

}

else{

statement; statement; ...

}

}



$ awk '{if ($1 > 100) print $1 "bad" ; else print "ok"}'test。如果$1大于100则打印$1 bad,否则打印ok。



$ awk '{if ($1 > 100){ count++; print $1} else {count--; print $2}' test。如果$1大于100,则count加一,并打印$1,否则count减一,并打印$1。

if/else else if语句,用于多重判断。



格式:

{if (expression){

statement; statement; ...

}

else if (expression){

statement; statement; ...

}

else if (expression){

statement; statement; ...

}

else {

statement; statement; ...

}

}



 循环



*



awk有三种循环:while循环;for循环;special for循环。

*



$ awk '{ i = 1; while ( i <= NF ) { print NF,$i; i++}}' test。变量的初始值为1,若i小于可等于NF(记录中域的个数),则执行打印语句,且i增加1。直到i的值大于NF.

*



$ awk '{for (i = 1; i *



breadkcontinue语句。break用于在满足条件的情况下跳出循环;continue用于在满足条件的情况下忽略后面的语句,直接返回循环的顶端。如:



{for ( x=3; x<=NF; x++)

if ($x<0){print "Bottomed out!"; break}}

{for ( x=3; x<=NF; x++)

if ($x==0){print "Get next item"; continue}}





*



next语句从输入文件中读取一行,然后从头开始执行awk脚本。如:



{if ($1 ~/test/){next}

else {print}

}





*



exit语句用于结束awk程序,但不会略过END块。退出状态为0代表成功,非零值表示出错。



 数组



awk中的数组的下标可以是数字和字母,称为关联数组。

 下标与关联数组



*



用变量作为数组下标。如:$ awk {name[x++]=$2};END{for(i=0;i *



special for循环用于读取关联数组中的元素。格式如下:



{for (item in arrayname){

print arrayname[item]

}

}



$ awk '/^tom/{name[NR]=$1}; END{for(i in name){print name[i]}}' test。打印有值的数组元素。打印的顺序是随机的。

*



用字符串作为下标。如:count["test"]

*



用域值作为数组的下标。一种新的for循环方式,for (index_value in array) statement。如:$ awk'{count[$1]++} END{for(name in count) print name,count[name]}' test。该语句将打印$1中字符串出现的次数。它首先以第一个域作数组count的下标,第一个域变化,索引就变化。

*



delete 函数用于删除数组元素。如:$ awk '{line[x++]=$1} END{for(x in line) delete(line[x])}' test。分配给数组line的是第一个域的值,所有记录处理完成后,special for循环将删除每一个元素。

awk的其他参数说明:

参照网站http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html

sed基本常用命令的更多相关文章

  1. grep,awk和sed的常用命令和语法

    Grep的常用命令语法 1. 双引号引用和单引号引用在g r e p命令中输入字符串参数时,最好将其用双引号括起来.例如:“m y s t r i n g”.这样做有两个原因,一是以防被误解为 s h ...

  2. awk sed grep 常用命令

    文本间隔 在每一行后面增加一空行: sed G sed G v1 >v2 在每一行后面增加两行空行: sed 'G;G' 将第一个脚本所产生的所有空行删除(即删除所有偶数行): sed 'n;d ...

  3. sed一些常用命令

    [转] http://blog.chinaunix.net/uid-20754793-id-177657.html 下面是我学习sed时参照参考书总结的一些常用sed命令,基本上每条语句都进行了调试1 ...

  4. 【sed】常用命令

    替换 替换某一整行 sed '1c hello' test #将第一行替换为hello str1替换为str2 sed 's/^str1.*/str2/' filename #以str1开头 sed ...

  5. [转]sed常用命令总结

    转自:http://blog.chinaunix.net/uid-26963748-id-3249732.html 一.Sed简介 Sed:Stream Editor  流式编辑器 又称行编辑器,每次 ...

  6. Linux常用命令之sed

    标题:sed命令的使用 作用:sed(stream editer)是以行为单位处理文本数据,可以对数据按行进行选取(显示打印).替换.删除和新增等功能. 工作流程:sed是一个流编辑器,它可以对从标准 ...

  7. Linux常用命令之sed(2)

    Sed SED的英文全称是 Stream EDitor,它是一个简单而强大的文本解析转换工具,在1973-1974年期间由贝尔实验室的Lee E. McMahon开发,今天,它已经运行在所有的主流操作 ...

  8. shell常用命令归类整理

    shell 命令整理     bash shell 含有许多功能,因此有许多可用的命令:本文档仅罗列了一些常用命令及其使用频率较高的参数.#本文档仅罗列了一些常用命令及其使用频率较高的参数.#vers ...

  9. Liunx 常用命令

    Liunx 常用命令================================================================================ 1. 远程拷贝文件 ...

随机推荐

  1. python 脚本开发实战-当当亚马逊图书采集器转淘宝数据包

    开发环境python2.7.9 os:win-xp exe打包工具pyinstaller 界面tkinter ============================================= ...

  2. Java钉钉开发_01_开发前的准备

    源码已上传GitHub:传送门 一.准备事项 1.1  一个能在公网上访问的项目: 参见:Java微信开发_02_本地服务器映射外网 1.2  一个钉钉账号 去注册 1.3 创建一个应用 登录钉钉后台 ...

  3. VC维含义的个人理解

    有关于VC维可以在很多机器学习的理论中见到,它是一个重要的概念.在读<神经网络原理>的时候对一个实例不是很明白,通过这段时间观看斯坦福的机器学习公开课及相关补充材料,又参考了一些网络上的资 ...

  4. 机器学习 数据挖掘 推荐系统机器学习-Random Forest算法简介

    Random Forest是加州大学伯克利分校的Breiman Leo和Adele Cutler于2001年发表的论文中提到的新的机器学习算法,可以用来做分类,聚类,回归,和生存分析,这里只简单介绍该 ...

  5. 将本地代码上传到github

    准备工作上传本地代码到github 准备工作 在github上创建自己的Repository. 安装git,centos的git安装教程. 上传本地代码到github git init git add ...

  6. vue2购物车ch1-(安装依赖、简单配置、 axios获取api的模拟数据)

    0--项目说明 说明此项目源自某课网购物车教程,但是在开发过程中,发现在开发过程中用的还是 vue-resource(宣布不更新的类$.ajx()插件),为了以后的发展使用axios.js,详情参考 ...

  7. HTML协议详解

    一.实验环境搭建 因agileone很久没有更新,所以安装时需要注意版本.个人验证,如下版本可用: 1.XAMPP 实验版本:XAMPP for Windows Version 1.6.8 下载地址: ...

  8. 用html +js+css 实现页面轮播图效果

    html 页面 <html lang="en"> <head> <meta charset="UTF-8"> <met ...

  9. Oracle的常用命令之备份和恢复数据库

    1 将数据库TES完全导出,用户名system 密码manager 导出到D:\daochu.dmp中 exp system/manager@TEST file=d:\daochu.dmp 2 将数据 ...

  10. SQL SERVER 数据库级联删除

    --SQL SERVER 2008R2 级联删除:主子表设置外键关联,当主表数据删除的时候会自动删除子表中对应的数据 --创建主表 create table test_main( ID ,) PRIM ...