sed 's/原字符串/替换字符串/' sed 's?原字符串?替换字符串?' //自定义分隔符为问号 sed "s/原字符串包含'/替换字符串包含'/" //要处理的字符包含单引号
# 可以在末尾加g替换每一个匹配的关键字,否则只替换每行的第一个 sed 's/原字符串/替换字符串/' //替换所有匹配关键字
# 替换样式可以多个在同一条命令中执行,用分号分隔 sed 's/^/添加的头部&/g; s/$/&添加的尾部/g'
# 上箭头”^”表示行首 # 美元”$”符号如果在引号中表示行尾 # 但是在引号外却表示末行(最后一行) sed 's/^/添加的头部&/g' //在所有行首添加 sed 's/$/&添加的尾部/g' //在所有行末添加 sed '2s/原字符串/替换字符串/g' //替换第2行 sed '$s/原字符串/替换字符串/g' //替换最后一行 sed '2,5s/原字符串/替换字符串/g' //替换2到5行 sed '2,$s/原字符串/替换字符串/g' //替换2到最后一行
# 在文件夹中批量替换 # 在其他文件夹 sed -i “s/oldstring/newstring/g” `grep oldstring -rl yourdir` # 在当前文件夹 sed -i "s/wordcount/symbols_count/g" `grep wordcount -rl ./`
II.III. 插入
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
# 在某行(指具体行号)前或后加一行内容 # 在第2行前插入ttt,并且将结果更新到a.txt(如果不想将插入真正更新到文件,去掉后面的-i选项就可以) sed '2 ittt' -i a.txt # 在第2行后插入ttt,并且将结果更新到a.txt(如果不想更新原文件,去掉-i) sed '2 attt' -a a.txt # 在指定的多行前面插入 sed 'n,m ittt' -i a.txt # 在指定的多行后面插入 sed 'n,m attt' -a a.txt
# 插入另外一个文件的内容 # 匹配naughty这个单词并且在该行的下一行开始插入dd文件的内容 sed '/naughty/r dd' data
# 配合find查找的内容处理 find . -name server.xml|xargs sed -i '/directory/i <!--' find . -name server.xml|xargs sed -i '/pattern="%h/a -->'
II.IV. 删除
1 2 3 4 5 6 7 8 9 10 11 12
sed '2,5d' datafile #删除第二到第五行 sed '/My/,/You/d' datafile #删除包含"My"的行到包含"You"的行之间的行 sed '/My/,10d' datafile #删除包含"My"的行到第十行的内容
# 删除指定行的上一行或下一行 删除指定文件的上一行 sed -i -e :a -e '$!N;s/.*n(.*directory)/1/;ta' -e 'P;D' server.xml 删除指定文件的下一行 sed -i '/pattern="%/{n;d}' server.xml