Mac grep sed awk 三剑客命令

2020-07-20  本文已影响0人  GalaxyJM

一、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}'
注意:echo:用于字符串的输出
上一篇下一篇

猜你喜欢

热点阅读