sed(Stream editor)流编辑器。
功能:
对一个输入流(以行为单位)进行编辑和处理。
从标准输入或者文件中一行一行的读取内容,一行一行的执行命令,直到文件结尾。
使用:
sed [-nefi] '[动作]' [输入文本]
参数:
-n:不自动打印当前要处理的行。sed每读入一行,都会放入到一个叫Pattern space(模式空间)里,以便于执行编辑命令来处理它。默认情况下,会自动把这一行(Pattern space里的内容)打印出来。如果使用-n参数后,就只有经过sed处理的那一行被列出来。
q@Q:~/learn$sed -n 'p' test.txt
Just for test.
line1:a
line2:b
line3:c
line4:d
-e script:多重操作。
q@Q:~/learn$sed -e '=' -e '1d' -e's/a/instead/' test.txt
1
2
line1:instead
3
line2:b
4
line3:c
5
line4:d
-f file:执行file文件里的脚本。
q@Q:~/learn$ cat sedcmd.sed
s/b/B/
4d
--------------------
q@Q:~/learn$sed -f sedcmd.sedtest.txt
Just for test.
line1:a
line2:B
line4:d
-i:直接编辑。可生成备份文件。
q@Q:~/learn$sed -i.bak -e '1d' -e's/a/instead/' test.txt
q@Q:~/learn$ cat test.txt
line1:instead
line2:b
line3:c
line4:d
---------------------
q@Q:~/learn$ cat test.txt.bak
Just for test.
line1:a
line2:b
line3:c
line4:d
动作:
a 在指定行的后面追加一行。
i 在指定行的前面插入一行。
c 把指定行替换。
d 删除行。
p 打印。
s 字符串替换。
s/pattern/repacement/flags
几种flag:
数字,替换第几个匹配的地方。
g,替换所有。
p,打印原来的内容。
w file,将结果写到文件中。
一些其他操作项:
w 写入另一个文件。
q@Q:~/learn$sed '1,3w xxx.txt'test.txt
Just for test.
line1:a
line2:b
line3:c
line4:d
-------------------------------------
q@Q:~/learn$ cat xxx.txt
Just for test.
line1:a
line2:b
范围控制:
1)不指定。所有行
2)指定行号。
n,m | n到m行 |
n,$ | n到最后一行 |
n,+m | n到n+m行 |
n~m | 从n行开始,每过m行执行一次 |
/t1/,/t2/ | 第一次找到t1的行到第一次找到t2的行 |