sed,awk工具学习

来源:互联网 发布:禁止安装软件的软件 编辑:程序博客网 时间:2024/06/03 20:19

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}
condition{actions}

这里写图片描述

这里写图片描述

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

这里写图片描述

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


这里写图片描述

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

这里写图片描述

这里写图片描述

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

这里写图片描述

原创粉丝点击