在mac上使用sed和awk---学习思想

- man sed与info sed永远是最好的文档。

  • 选项

-e SCRIPT

-f SCRIPT-FILE

# 打印1-3行
sed -n -e '1,3p' <file>
# 删除1-3行
sed -n -e '1,3d' <file>
# 打印出abc开始的行
sed -n -e '/^abc/p;a newline' <file>
# 在所有行前加#
sed -e 's/^/#/g' <file>
# 在所有非#开头的行加#
sed -e 's/^[^#]/#/g' <file>
# 将所有字母大写,-r表示启用正则匹配
sed -r -e 's/(.*)/\U\1/g' <file>
# 将所有单词首字母大写
sed -r  -e 's/(\b[^\s])/\u\1/g' <file>
# 删除所有#开头的行
sed -r -e '/^#/d' /<file>
# 将sshd_config中的#PasswordAuthentication yes去除注释,并将yes改为no
sed -n -r -e 's/^.{0,1}(PasswordAuthentication ).{2,3}$/\1no/gp' /etc/ssh/sshd_config
# 就地修改
sed  -i -r -e 's/^.{0,1}(PasswordAuthentication ).{2,3}$/\1no/g' /etc/ssh/sshd_config
sed命令语法:
[addr]X[options]
addr是一个可选的能否标识行的地址,可以是一个单独的方号、正则、行范围。
单独一个数字标识行号。
3,5表示3-5行。
/^#define/ 表示以#define开头的行。
/X$/ 表示以X结尾的行。
$表示最后一行。
X[options]是一个动作及其选项,该动作只对addr能够匹配的行进行处理,可选值有以下:
a :新增, [options]为要增加的内容,新增的内容为单独一行,在当前行的下方,如果需要增加多行,行与行之间使用\n分割。
c :取代, [options]为新的内容。
i :插入, [options]为要插入的内容,插入的内容为单独一行,在当前行的上方,同样可以使用\n实现插入多行。
d :删除, 不需要[options]。
p :列印,不需要[options],将当前模式空间的内容打印出来,通常与参数 sed -n配合使用。
s :取代,最复杂的一个命令,[options]为正则表达式/REGEXP/REPLACEMENT/[FLAGS],例如:s/old/new/g表示将old换为new,g表示进行全局替换,默认为替换第一处。/old/new/g为s的option。
REGEXP
正则表达式,匹配的内容会被REPLACEMENT替换。
REPLACEMENT
字符串,直接替换
\N N可以为1~9, 引用匹配分组的内容。
sed -e 's/#\(Port.+\)/\1/g' /etc/ssh/sshd_config
sed -r -e 's/#(Port.+)/\1/g' /etc/ssh/sshd_config
上面的两行等价将以#PORT开始的行#去掉,使用-r选项能够避免使用\(\)
& 引用整个匹配内容
sed -e s/^Port/#&/g /etc/ssh/sshd_config
匹配以Port开头的行,并在前面加上#。
\L 将后面的内容转为小写,直到遇到\U或\E结束
\l 将后面的一个字符转为小写
\U 将后面的内容转为大写,直到遇到\L或\E结束
\u 将后面的一个字符转为大写
\E 结束\L,\U的转换
sed -r -e 's/(\b[^\s])/\u\1/g' /etc/ssh/sshd_config
将所有单词首字母大写。
FLAGS
g 全局替换
p 打印
= 打印行号
y :转换,[options]为转换字典/src/dst/,将出现的每个src中的字符替换为dst中相应的字符,y/abc#/ABC%/a->A,b->B,c->C,#->%
q :退出,[options]为返回值,退出后直接结束输入流的处理。
多个命令可以使用;进行分割,但是a,c,i这三个后面无法使用;再接其它命令,这也就是说如果使用多个命令这三个必须放在最后,例如:/^abc/p;a newline将abc开始的行打印,并在其后添加一行。

  • 支护某博主

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值