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. 通过express搭建自己的服务器

    前言 为了模拟项目上线,我们就需要一个服务器去提供API给我们调用数据.这次我采用express框架去写API接口.所有请求都是通过ajax请求去请求服务器来返回数据.第一次用node写后端,基本就是 ...

  2. R语言包下载(转载)

    http://blog.csdn.net/hongjinlongno1/article/details/53130893 包含几乎所有包,很方便

  3. webservice部署到服务器报错

    System.Net.WebException: 基础连接已经关闭: 发送时发生错误. ---> System.IO.IOException: 从传输流收到意外的 EOF 或 0 个字节. 在 ...

  4. .NET DateTime 源码学习

    今天下载了微软.Net 源码,看了一下DateTime类,做下记录 DaysInMonth 这个方法是获取某年某月的天数,平时直接用觉得很简单,今天看到源码,发现设计的还是很好的 我想如果是我的话,封 ...

  5. FPGA在其他领域的应用(四)

    工业领域: 从工厂和过程自动化到能源基础设施和机器视觉系统,工业产品有助于改善我们的世界.产品必须安全.可靠.适应性强,而且耐用.同时,商业成功要求你在激烈竞争的市场中行动迅速,同时降低总成本. 英特 ...

  6. Jquery+Ajax限制查询间隔

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Jquery20150305.a ...

  7. 学习笔记之CSS样式(选择器背景字体边框绝/相对、固定位置and分层流等)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. 从给数组中的对象去重看Javascript中的reduce()

    假设有这样一个数组: let person = [ {id: 0, name: "小明"}, {id: 1, name: "小张"}, {id: 2, name ...

  9. Windows 10新功能

    Windows 10 中面向开发人员的新增功能 Windows 10 及新增的开发人员工具将提供新通用 Windows 平台支持的工具.功能和体验.在 Windows 10 上安装完工具和 SDK后, ...

  10. Linux入门(15)——Ubuntu16.04安装codeblocks搭建C/C++的IDE环境

    安装codeblocks: sudo add-apt-repository ppa:damien-moore/codeblocks-stable sudo apt-get update sudo ap ...