-i是对文件本身进行修改,而不是副本。
sed [option] {sed-command} {input-file}
sed在正常情况下,将处理的行读入模式空间(pattern space),脚本中的“sed-command(sed命令)”就一条接着一条进行处理,知道脚本执行完毕。然后该行呗输出,模式(pattern space)被清空;接着,在重复执行刚才的动作,文件中的新的一行被读入,直到文件处理完毕。
# 删除文件中的所有空行(与“grep '.' ”效果相同)
sed '/^$/d' # 方法1
其中,^表示文件开头,$表示文件结尾,d表示删除资料。
sed '/./!d' # 方法2
其中,.(点号)表示有内容的任意字元,非空白行。!d表示不删除
位址为 regular expression时:、,在regular expression 前後必须加上 "/"。
# 只保留多个相邻空行的第一行。并且删除文件顶部和尾部的空行。
sed '/./,/^$/!d' #方法1,删除文件顶部的空行,允许尾部保留一空行
这里的,逗号不知道是什么意思?逗号一般是分隔符。
sed '/^$/N;/\n$/D' #方法2,允许顶部保留一空行,尾部不留空行
D 删除 pattern space 内第一个 newline 字母 前的资料。
用分号来隔离多条命令。
N 添加下一笔资料到 pattern space。
这里的\n不知道什么意思?
# 只保留多个相邻空行的前两行。
sed '/^$/N;/\n$/N;//D'
# 删除文件顶部的所有空行
sed '/./,$!d'
# 删除文件尾部的所有空行
sed -e :a -e '/^\n*$/{$d;N;ba' -e'}' # 对所有sed有效
sed -e :a -e '/^\n*$/N;/\n$/ba' # 同上,但只对 gsed 3.02.*有效
Pastedfrom <http://sed.sourceforge.net/sed1line_zh-CN.html>
5. 快速一行命令
下面是一些一行命令集。([ ]表示空格,[ ]表示t a b键)
‘s / \. $ / / g’ 删除以句点结尾行
‘-e/abcd/d’ 删除包含a b c d的行
‘s / [] [ ] [ ] * / [ ] / g’ 删除一个以上空格,用一个空格代替
‘s / ^[ ] [ ] * / / g’ 删除行首空格
‘s / \. [ ] [ ] * / [ ] / g’ 删除句点后跟两个或更多空格,代之以一个空格
‘/ ^ $/ d’ 删除空行
‘s / ^. / / g’ 删除第一个字符
‘s/COL \ ( . . . \ ) / / g’ 删除紧跟C O L的后三个字母
‘s / ^\ / / / g’ 从路径中删除第一个\
‘s / [] / [ ] / / g’ 删除所有空格并用t a b键替代
‘S / ^[ ] / / g’ 删除行首所有t a b键
‘s / [] * / / g’ 删除所有t a b键
Pastedfrom <http://floss.zoomquiet.io/data/20100821145157/index.html>