一、grep
二、sed
sed不会对源文件进行操作,会生成一个模式空间(类似于缓存)修改里面的内容
如果需要修改源文件,需要加上-i,mac 下的sed命令和linux下的参数略有不同,mac加上 -i ‘’ 。
可参考:https://www.cnblogs.com/ginvip/p/6376049.html
1.a:添加
例:在test.sh文件第二行下面添加“newline”
Linux语句:
sed '2 a newline' test.sh
mac下的Linux语句:
sed '2a\'$'\nnewline\n' test.sh
注意:
1.这个$符表示匹配最后一行。
2.插入字段两头都要加上换行 \n
2.i:插入
和上面用法一样,但是插入在某行的上面
3.s:替换
用一个字符串替换另一个
例:把test.sh文件的“ hello”替换成“123”
sed -e 's/hello/123/g' test.sh
注意:-e可加可不加,不加g的话只替换每行的第一个出现的hello,加g会全局替换
4.c:替换
用新文本修改(替换)当前行中的文本
例:把第二行的内容修改为num
-e '2c\'$'\nnum\n' test.sh
5.d:删除
例:删除test.sh文件中第2-5行的内容
sed -e '2,5d' test.sh
6.p:打印
打印包含root的行
-n '/root/p' test.sh
注意:
-n :使用安静模式,在一般情况所有的 STDIN 都会输出到屏幕上,加入-n 后只打印被 sed 特殊处理的行
三、awk
awk:把文件逐行读入,以空格为默认分隔符将每行切片,切开的部分在做后续处理
awk命令形式
awk ‘正则+动作’ 文件名
1.查看含有root的行
awk -F : '/root/{print $0}' /etc/passwd
2.查看第2行内容并打印
awk -F : 'NR==2{print $0}' /etc/passwd
3.使用BEGIN加入标题
awk -F : 'BEGIN{print "begin"}{print $1,$2}' /etc/passwd
4.自定义分隔符
echo '123|222|12333' | awk 'BEGIN{RS="|"}{print $0}'
网友评论