在mac上使用sed和awk---学习思想
创始人
2024-06-03 06:35:12

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

- 流编辑中有pattern space的概念,翻译为:模式空间。简单理解就是一个缓冲区,sed从输入流中一行一行的取出内容放到这个缓冲区中按照SCRIPT(脚本)进行处理。

### 选项

-e SCRIPT

-f SCRIPT-FILE

---

```

# 打印1-3行

sed -n -e '1,3p'

# 删除1-3行

sed -n -e '1,3d'

# 打印出abc开始的行

sed -n -e '/^abc/p;a newline'

# 在所有行前加#

sed -e 's/^/#/g'

# 在所有非#开头的行加#

sed -e 's/^[^#]/#/g'

# 将所有字母大写,-r表示启用正则匹配

sed -r -e 's/(.*)/\U\1/g'

# 将所有单词首字母大写

sed -r -e 's/(\b[^\s])/\u\1/g'

# 删除所有#开头的行

sed -r -e '/^#/d' /

# 将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开始的行打印,并在其后添加一行。

相关内容

热门资讯

网通招聘笔试真题 网通招聘笔试...   网理历年招聘常考的笔试真题,今天小编在此跟大家分享下:  选择题(每题5分,只有一个正确答案) ...
长虹心理测试类笔试题和面试题答...   长虹心理测试类笔试题共有10题,每题只能选择一个答案,应为你第一印象的答案,把相应答案的分值加在...
厦新招聘笔试题和面试题答案 街...   厦新招聘笔试题主要有以下三类题型:  Intel汇编编程   1。 请简要介绍利用Intel汇编...
最新或2023(历届)雅虎校园...   今天为大家整理的是一套最新或2023(历届)雅虎校园招聘笔试题目,想要应聘成为雅虎的一份子的朋友...
卡夫食品笔试题和面试题答案及答...   下面分享给大家的是一套完整的卡夫食品笔试题,另外还附带答案,大家敬请收藏和分享。   1、6P的...