码迷,mamicode.com
首页 > 其他好文 > 详细

sed

时间:2015-09-14 13:38:49      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:

sed

sed

-n  只有经过 sed 特殊处理的那一行
-e  直接在指令模式上进行 sed 的工作编辑
-f  执行 filename 内的 sed
-r  延伸型正则表达式, 类似 egrep
-i  直接修改读取的档案内容
a  新增
i  插入
d  删除
c  取代, 行取代
s  取代, 内容取代
r  读取文件
可以使用 @,! 等代替 /

表达式的最后一个的参数

g  代表全文
1 (默认), 表示替换第一个
2 表示替换第二个
echo "abcaba" | sed ‘s@a@d@2‘        # abcdba
cat /etc/fstab | sed ‘2r /etc/issue‘           # 将 /etc/issue 填加到 /etc/fstab 的第二行
cat /etc/fstab | sed -n ‘2,$p‘                 # 打印 2 到最后一行
cat /etc/fstab | sed ‘s!/!#!g‘                 # 替换

acidr

cat a.txt

111111
222222
333333

sed ‘2iabc\nd‘ a.txt # i, insert

111111
abc
d
222222
333333

sed ‘2cabc\nd‘ a.txt # c, 取代

111111
abc
d
333333

执行到 100 行的时候退出, 等同于

sed ‘100q‘ test.txt
head -n 100 | sed ...

在文件的结尾添加一行, a 代表新建一行, $代表最后一行, 可以用 1, 表示第一行, N 来表示第 N 行

sed ‘$a #NEW LINE‘ FILE

替换

sed ‘s/#.*$//g‘ FILE             # 删除# 开头的注释
sed ‘/^$/d‘                      # 删除空白行 /^$/d

echo "hello world" | sed ‘s/ wo/wo/‘

helloworld

echo "hello world" | sed ‘s/hELLO/HELLO/‘

hello world

echo "hello world" | sed ‘s/hELLO/HELLO/i‘

HELLO world

cat test.txt

abc
dabbc
defbc
sed ‘/^ab/ { s/bc/ddd/}‘ test.txt
一开始使用 /*/ 然后 {}, 表示在该模式所匹配到的行内进行操作, 输出

addd
aadddbc
defbc

多次使用替换

echo "hello world" | sed ‘s/world/WORLD/;s/hello/HELLO/‘

HELLO WORLD

使用 & 來表示匹配的范围

echo "hello world" | sed ‘s/hello/& world/‘

hello world world

echo "see 1 2 3" | sed ‘s/see [0-9]/you &/‘

you see 1 2 3

echo "see 1 2 3" | sed ‘s/see [0-9].*/you &/‘

you see 1 2 3

后向引用

echo "see 1 2 3" | sed ‘s@\(see \)\([0-9]\)@\1@‘

see  2 3

echo "see 1 2 3" | sed ‘s/\(see \)\([0-9]\)/\2/‘

1 2 3

cat test.txt

first:second
one:two

sed ‘s/\(.*\):\(.*\)/\2:\1/‘ test.txt

second:first
two:one
echo /etc/rc.d/abc  | sed ‘s@\(/.*/\)\([^/].*\)@\2@‘
echo /etc/rc.d/abc  | sed -r ‘s@(/.*/)([^/]+)@\2@‘         # 使用延伸性的 re

相关阅读

sed

标签:

原文地址:http://www.cnblogs.com/sunznx/p/4806758.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!