如何对sed 和 awk进行基本的运用
扫描二维码
随时随地手机看文章
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 判断