批量替换命令(sed)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

原文地址

/2009/10/unix -sed -tutorial-advanced-sed -substitutio n-examples/

发现thegeekstuff 确实是个不错的网站,一周推送geek 教程,看了后受益颇深,特此分享此为不完整译文加上本人一些理解

1.Sed 替换分隔符

除了\外,其他的字符都可以当作Sed 的替换分隔符,如 @ % | ; :

首先创建一个输入文件path.txt 1 2 3 4 $ cat path.txt

/usr/kbos/bin:/usr/local/bin:/usr/jbin:/usr/bin:/usr/sas/bin /usr/local/sbin:/sbin:/bin/:/usr/sbin:/usr/bin:/opt/omni/bin: /opt/omni/lbin :/opt/omni/sbin:/root/bin

示例一,指定@为替换分隔符,把/opt/omni/lbin 替换为/opt/tools/bin

1 2 3 4 $ sed 's@/opt/omni/lbin@/opt/tools/bin@g' path.txt

/usr/kbos/bin:/usr/local/bin:/usr/jbin/:/usr/bin:/usr/sas/bin /usr/local/sbin:/sbin:/bin/:/usr/sbin:/usr/bin:/opt/omni/bin: /opt/tools/bin :/opt/omni/sbin:/root/bin

示例二,如果指定/为分隔符,那么新旧字符串的/需要用\转义

1 2 3 4 $ sed 's/\/opt\/omni\/lbin/\/opt\/tools\/bin/g' path.txt

/usr/kbos/bin:/usr/local/bin:/usr/jbin/:/usr/bin:/usr/sas/bin /usr/local/sbin:/sbin:/bin/:/usr/sbin:/usr/bin:/opt/omni/bin: /opt/tools/bin :/opt/omni/sbin:/root/bin

2,使用 '&' 得到匹配的字符串

示例一,替换/usr/bin/为/usr/bin/local

1 2 3 4 $ sed 's@/usr/bin@&/local@g' path.txt

/usr/kbos/bin:/usr/local/bin:/usr/jbin/:/usr/bin/local :/usr/sas/bin /usr/local/sbin:/sbin:/bin/:/usr/sbin:/usr/bin/local :/opt/omni/bin: /opt/omni/lbin:/opt/omni/sbin:/root/bin

示例二,使用&匹配整行

1 2 3 4 $ sed 's@^.*$@<<<&>>>@g' path.txt

<<>> <<>> <<>>

3,组及组引用

示例一,得到每行的第一个路径

示例二,多组,改变path.txt 最后一行字段的顺序 1 2 3 4 $ sed '$s@\([^:]*\):\([^:]*\):\([^:]*\)@\3:\2:\1@g' path.txt /usr/kbos/bin:/usr/local/bin:/usr/jbin:/usr/bin:/usr/sas/bin /usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/omni/bin: /root/bin:/opt/omni/sbin:/opt/omni/lbin

示例三,得到/etc/passwd 文件中的用户名列表 1 2 3 4 5 6 7 8 $sed 's/\([^:]*\).*/\1/' /etc/passwd

root

bin

daemon

adm

lp

sync

shutdown

示例四,给单词的第一次字母加上括号

1 2 $ echo "Welcome To The Geek Stuff" | sed 's/\(\b[A-Z]\)/\(\1\)/g' (W )elcome (T )o (T )he (G )eek (S )tuff

相关文档
最新文档