sed,awk工具学习

Posted xy913741894

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sed,awk工具学习相关的知识,希望对你有一定的参考价值。

sed工具

sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法

常用选项:
-n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e∶直接在指令列模式上进行 sed 的动作编辑;
-f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;
-r∶sed 的动作支援的是延伸型正规表示法的语法。(默认是标准正则)
-i∶直接修改读取的档案内容,而不是由萤幕输出。

常用命令:
a ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~
s ∶取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

测试文件如下:

1111
2222
3333
4444
5555
6666
7777
8888
9999

删除

添加

替换

sed ‘s/要被替换的字符串/新字符串/g’

sed 's/test/*&*/g' file 符号&代表查找串。 test将被替换为*test*

查看

sed '/pattern/action' file

查看以1开头的行:

sed -n '/^1/p' file

以上的命令都不对file文件产生影响,而一旦我们加上了-i选项就可以直接改变原文件了

将文件的每一行最后“.”替换为“!”

在文件的最后一行加上###



awk工具

awk是以行为单位处理文件,但是它比sed更强的地方在于它还能以列的方式处理文件,对于awk来说,一行内容可以称作为一个记录,默认的行分隔符为\\n,一列内容可称作为一个域,默认的列分隔符是空格和tab,但是行列分隔符都可以自己设定。
awk实际是一门脚本语言,语法有点类似C语言

一般以以下方式使用:

直接在命令行:
awk options ‘script’ file1 file2...

脚本方式:
awk options -f scriptfile file1 file2...
./scriptfile file1 file2

比如打印file第二列的内容
awk ‘print $2’ file

脚本方式如下图:

一般编辑awk格式如下:

/pattern/actions
conditionactions

awk命令的conditions部分还可以是BEGIN和END,这两分别代表处理文件之前以及处理文件之后执行一次操作,具体如下:

上述是求1-9相加的和,BEGIN在文件处理之前定义i=0,中间就像C语言一样用循环相加,最后END在文件处理完执行打印操作。


设置域分隔符为c,输出时候设置输出分隔符为###

统计一个文件里面的错误:

以上是关于sed,awk工具学习的主要内容,如果未能解决你的问题,请参考以下文章

Linux sed 命令详解

学习sed,awk最好的路径

[Linux Shell学习系列十四]sed和awk-5.awk基础

awk工具简介

awk工具简介

Linux学习(二十五)正则表达式awk