三大文本处理工具有grep,sed,awk
一、grep的使用
grep的格式 grep [命令的选项] ‘匹配字符串’ 文件名称
eg: grep -c 'hello' a.sh //查找hello这个字符串在文件a.sh里面出现了几次
中间有很多可供选择的选项:
-c 计算找到字符串的次数
-i 忽略大小写
-n 带行号输出
-v 反向选择
-w 匹配单词
-o 只显示匹配的内容
当然grep一般都会配合正则表达式去进行使用
二、sed的应用
sed实现增删查改替换
sed [ ] [命令] 文件
-n 只打印和模式匹配的行,一般与p一起使用
例如·: sed -n '2p' a.txt 输出文件中的第二行
-e 进行多行编辑,在连续使用多行sed命令中使用
sed -e '/^h $o/ d' -e '2a new' a.sh
-f sed操作命令写在脚本中
-i 直接修改文件
d 删除匹配到的行
p 匹配显示的行
a 在指定的行后面追加文本,可以使用\n实现多行追加
i 在指定行前插入文本,可以支持多行插入
s 查找符合条件的内容并且用新内容进行替换,前后带有分隔符,常用分隔符 /,#,@分隔符后多带替换标记
eg: sed -i 's/hello/hi/g' a.sh 将hello替换成hi g表示全局替换 -i直接修改文件
g 全局替换
w 将替换的结果保存在文件中
查询 -n 结合p
eg:cat a.sh | grep hello |sed -n '1,4p';//输出a.sh中带hello的字符从第一个输出到第四个
eg:cat a.sh | grep hello |sed -n '4p';//输出a.sh中带hello的字符的第四个
cat user.txt | grep h | sed '数字d'
eg: cat user.txt | grep h | sed '2d' //删除a.sh中带hello的字符的第2个
eg: cat user.txt | grep h | sed '2,4d' //a.sh中带hello的字符的第二个到第四个
三、awk的使用:
强大的文本分析工具,它依次处理文件的每一行,并读取里面的每一个字段。
命令格式:awk [-F 字段分隔符] ‘命令’ 文件
工作方式:读入有‘\n’换行符分割的一条记录,然后将记录按指定的字段分隔符划分字段,$0则表示所有字段,$1表示第一个字 段,$n表示第n个字段。
awk脚本:awk是模式和操作组成的
四种模式
正则表达式:使用通配符的扩展集
关系表达式:使用运算符进行操作,可以是字符串或数字的比较测试
模式匹配表达式:用运算符~
(匹配)和~!
不匹配
BEGIN 语句块, pattern语句块, END语句块
awk脚本由begin,end,和其他语句组成
eg: awk 'BEGIN{i=0} {i++} END{print i}' a.sh