简介:
sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
实战一:
将如下内容:
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508143915_1.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508143915_2.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508143915_3.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508144007_1.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508144007_2.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508144007_3.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508144007_4.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508144124_1.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508145510_1.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508145511_2.jpg
转换成:
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508143915_1.jpg /data/www/uploads/allimg/130508/153_130508143915_1.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508143915_2.jpg /data/www/uploads/allimg/130508/153_130508143915_2.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508143915_3.jpg /data/www/uploads/allimg/130508/153_130508143915_3.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508144007_1.jpg /data/www/uploads/allimg/130508/153_130508144007_1.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508144007_2.jpg /data/www/uploads/allimg/130508/153_130508144007_2.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508144007_3.jpg /data/www/uploads/allimg/130508/153_130508144007_3.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508144007_4.jpg /data/www/uploads/allimg/130508/153_130508144007_4.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508144124_1.jpg /data/www/uploads/allimg/130508/153_130508144124_1.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508145510_1.jpg /data/www/uploads/allimg/130508/153_130508145510_1.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508145511_2.jpg /data/www/uploads/allimg/130508/153_130508145511_2.jpg
需求解析:
rsync同步需要源目两个目录,原内容最后一列即为源目录(/data/wwwpicbak/uploads/allimg/130508/153_130508143915_1.jpg),现在需要增加一个目标目录(/data/www/uploads/allimg/130508/153_130508143915_1.jpg),注意源目录中的“wwwpicbak”变成“www”,其他不变。
实战操作
步骤:先复制最后一列,再替换字符
cat FILENAME | sed 's/\(\/.*$\)/\1 \1/' | sed 's/wwwpicbak/www/2'
实战讲解
sed编辑器用圆括号来定义替换模式中的子模式。你可以在替代模式中使用特殊字符来引出每个子模式。替代字符由反斜线和数字组成。数字表明子模式的位置。sed编辑器会给第一个子模式分配字符\1,给第二个子模式分配字符\2,以此类推。
来看一个在sed编辑器脚本中使用这个特性的例子。
# echo "The System Administrator manual" | sed 's/\(System\) Administrator/\1 User/'
The System User manual
#
这个替换命令用一对圆括号将单词System括起来,将其标示为一个子模式。然后它在替代模式中使用 \1 来提取第一个匹配的子模式。这没什么特别的,但在处理通配符模式时却特别有用。
转载于:https://blog.51cto.com/chinahao/2050199