sed 和 awk的基本运用

来源:互联网 发布:beats微先专卖店 知乎 编辑:程序博客网 时间:2024/05/21 17:13

sed命令

sed本身也是个管道命令,可以将数据进行替换,删除,新增,选取特定行等功能。

sed [-nefr] [动作]

参数
 -n: 使用安静模式,在一般的sed用法中,所有STDIN的数据都会列出到屏幕上,但是加上-n只有sed特殊处理的那一行才会显示
 -e:直接在命令模式上进行sed的动作编辑
 -f:直接将sed的动作写在一个文件内, -f filename 则可以执行filename内的sed动作
 -r:sed的动作支持扩展正则表达式的语法
 -i:直接修改读取的文件的内容,而不是由屏幕输出。

动作说明:

[n1,[n2]] function
function的参数:
a:后面可以接字符串,这些字符串会出现在新的一行,目前的下一行
c:替换,替换n1:n2之间的行
d:删除
i:插入,出现在目前的上一行,和a相反。
p:打印
s:替换可以直接接替换的工作,通常这个s的动作可以搭配正则表达式,例如 1,20s/old/new/g

看命令猜测意思:

nl a.txt | sed '2,5d' 打印passwd内容,显示行号,删除2到5行。

nl a.txt| sed '2a drink tea ' 在第二行后(第三行)加drink tea 

插入多行:



每一行都要以 ‘\’结尾是关键


显示特定的行



将2到4的内容替换为no number



这是在文本最后一行 加入 文本


替换最后的d 为hello




awk

awk 是数据处理工具,sed 是常常对一行进行处理,但是awk经常是对一行里面分成字段来处理。


运行模式:awk '条件类型1{动作1}条件类型2{动作2}}...‘ filename

awk主要是处理每一行的字段内的数据,默认的字段的分隔符为空格键,或者tab键。

选取第一列和第三列



操作顺序是:

读入第一行,并将第一行的数据填入$0,$1,$2 .   $0代表的是第一行数据的意思

依据条件类型的限制,判断是否需要进行后面的操作

做完所有的动作与条件类型

若还有后续的行的数据,会重复1-3的步骤,直道所有的数据都会读完。

判断行和列的变量

NF:每一行$0拥有的字段总数

NR:目前awk所处理的是第几行数据

FS:目前分隔符,默认是空格键


这些都是内置变量。

awk的后续动作是 单引号括住的,所以动作里面的print要打印是包含非变量部分用 双引号定义出来。




awk也有一些逻辑运算符,和C语言一样。

第三段是UID,选择第三列10以下的数据,并且仅仅列出帐号和第三列。第三列是UID




上面没有显示第一个,因为默认的情况下还是以空格或者tab分开的,所以这个用了BEGIN 关键字


awk的统计功能,利用了内置变量NR 判断
























0 0
原创粉丝点击