Sed 备忘
时间:2006-02-17 来源:lvjinhua
小小流编辑器一个,却代表了超强的威力。
GNU Sed 4.1.4
它分开“模式空间”与“保持空间”,平时主要在“模式空间”操作,“保持空间”相当于一个临时备份。
Sed 的任何操作均不会覆盖源文件,因为它将操作对象拷贝到了“模式空间”中。
语法:
sed [-n] [-e] 'command' file(s)
sed [-n] -f scriptfile file(s)
-n 项禁止默认输出,只显示由p命令或s命令中的p标志指定的行。
-e cmd 指示下一个参数是个编辑命令。
-f file 指示下一个参数是个包含sed脚本的文件。
-i[SUFFIX] 将改动写回文件,加[SUFFIX]则备份文件。
在UNIX中假如脚本的第一行是#n,则有 -n 相同的效果(即无默认输出)
sed的命令语法: [addr[,addr]][!]command[arguments]
由addr指令标明要编辑的行,! 号指出编辑除addr标明以外的行,command是编辑指令。
例子: ( '/' can replaced by '@' or '|' )
sed -e 'y/12345/abcde/' file 将File中所有1换为a,2换为b,...
sed -e 's/xx/yy/g' file 将File中所有的xx替换为yy。
sed -e '/TODO/s/xx/yy/g' file 将包含TODO那行中所有xx替换为yy。
sed -n -e '/^BEGIN/,/^END/p' file 只输出BEGIN及END之间的内容。
sed -e '/SAVE/!d 删除不包含SAVE标志的所有行。
sed -e '/BEGIN/,/END/!s/xx,yy/g' 在所有行上将xx替换为yy,除了BEGIN及END之间的。
sed -n -e '/TODO/{
s/"/(/3
s/"/)/3
}' file 利用{}将多个命令放在一起,在此为,对于含有TODO的行,先将此行中的第3个(“)号替换为左括号,完后在剩余引号中再将第3个引号换为右括号号。如 果File中有一行为:"""abc""""",则命令完后变为:""(abc)""""。
sed -e 's/\<abc\>/csdn/g' file 将File中所有独立单词 abc 用 csdn 替换。
sed -e 's/.*TODO/# &/' file 添加#号到所有包含TODO的行。
sed -e '/TODO/i\text' file 在TODO上头插入串text
sed -e '/TODO/a\text' file 在TODO下头插入串text
sed -e '/TODO/c\text' file 将text代替包含TODO的行
sed -e '/^$/d' file 删除所有只包含换行符的行
sed -e '/^[ \t]*$/d' file 删除只包含空格,回车及Tab键的行
sed -e 's|abc|bbc|; s|ccc|bbb|' file 同时执行两个替换命令
GNU Sed 4.1.4
它分开“模式空间”与“保持空间”,平时主要在“模式空间”操作,“保持空间”相当于一个临时备份。
Sed 的任何操作均不会覆盖源文件,因为它将操作对象拷贝到了“模式空间”中。
语法:
sed [-n] [-e] 'command' file(s)
sed [-n] -f scriptfile file(s)
-n 项禁止默认输出,只显示由p命令或s命令中的p标志指定的行。
-e cmd 指示下一个参数是个编辑命令。
-f file 指示下一个参数是个包含sed脚本的文件。
-i[SUFFIX] 将改动写回文件,加[SUFFIX]则备份文件。
在UNIX中假如脚本的第一行是#n,则有 -n 相同的效果(即无默认输出)
sed的命令语法: [addr[,addr]][!]command[arguments]
由addr指令标明要编辑的行,! 号指出编辑除addr标明以外的行,command是编辑指令。
例子: ( '/' can replaced by '@' or '|' )
sed -e 'y/12345/abcde/' file 将File中所有1换为a,2换为b,...
sed -e 's/xx/yy/g' file 将File中所有的xx替换为yy。
sed -e '/TODO/s/xx/yy/g' file 将包含TODO那行中所有xx替换为yy。
sed -n -e '/^BEGIN/,/^END/p' file 只输出BEGIN及END之间的内容。
sed -e '/SAVE/!d 删除不包含SAVE标志的所有行。
sed -e '/BEGIN/,/END/!s/xx,yy/g' 在所有行上将xx替换为yy,除了BEGIN及END之间的。
sed -n -e '/TODO/{
s/"/(/3
s/"/)/3
}' file 利用{}将多个命令放在一起,在此为,对于含有TODO的行,先将此行中的第3个(“)号替换为左括号,完后在剩余引号中再将第3个引号换为右括号号。如 果File中有一行为:"""abc""""",则命令完后变为:""(abc)""""。
sed -e 's/\<abc\>/csdn/g' file 将File中所有独立单词 abc 用 csdn 替换。
sed -e 's/.*TODO/# &/' file 添加#号到所有包含TODO的行。
sed -e '/TODO/i\text' file 在TODO上头插入串text
sed -e '/TODO/a\text' file 在TODO下头插入串text
sed -e '/TODO/c\text' file 将text代替包含TODO的行
sed -e '/^$/d' file 删除所有只包含换行符的行
sed -e '/^[ \t]*$/d' file 删除只包含空格,回车及Tab键的行
sed -e 's|abc|bbc|; s|ccc|bbb|' file 同时执行两个替换命令
相关阅读 更多 +
排行榜 更多 +