文件处理,关于grep,awk,sed

grep 分析一行信息,以整行为单位,用在正则表达式里面。最重要的功能是进行字符串数据的对比,然后将符合需求的字符串打印出来

简单语法:

grep [-acinv] [--color=auto] '查找字符串' filename

-a 将binary文件以text文件的方式查找数据

-c 计算找到'查找字符串'的次数

-i 忽略大小写的不同

-n 输出行号

-v 反向选择,显示出没有'查找字符串'内容的那一行

--color=auto 将找到的关键字部分加上颜色

例:将last中出现root的一行取出来

last | grep 'root'

一些高级参数 :grep [-A] [-B] [--color=auto] '查找字符串' filename

-A 后面可加数字,除了列出该行,后续n行也列出来

-B 后面可加数字,除了列出该行,前面n行也列出来

例,在关键字所在行的前两行和后三行一起找出来

dmesg | grep -n -A3 -B2 --color=auto 'eth'



sed

可以将数据进行替换、删除、新增、选取特定行等

sed [-nefr] [动作]

动作说明:[n1[,n2]]function

n1,n2 不见得会存在,一般代表选择进行动作的行数,例如,需要在10行到20行之间进行,则“10,20[动作行为]”

function参数:

a 新增

c 替换

d 删除

i 插入

p 打印

s 替换

例,将/etc/passwd 的内容列出并打印行号,同时删除2~5行

nl /etc/passwd | sed '2,5d'


在第二行后加上“drink tea”

nl /etc/passwd | sed '2a drink tea'


例,将第2~5行的内容替换为“no 2-5 number”

nl /etc/passwd | sed '2,5c no 2-5 number'



awk

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

awk '条件类型1{动作1} 条件类型2{动作2}...' filename

last -n 5 仅取出前5行


取出第一项和第三项


awk内置变量  NF:每一行($0)拥有的字段总数  NR:目前awk所处理的是第几行  FS:目前的分割字符,默认是空格键


猜你喜欢

转载自blog.csdn.net/qq_22080999/article/details/81018872