shell sed 删除文件开头的空行

来源:互联网 发布:it监控软件排名 编辑:程序博客网 时间:2024/05/02 01:29

语法格式sed [参数] [位址function] [file]

定址[定址就是用于决定对哪些行进行编辑。]地址的形式可以是数字、正则表达式、或二者的结合。如果没有指定地址sed将处理输入文件的所有行。地址是逗号分隔的那么需要处理的地址是这两行之间的范围包括这两行在内。范围可以用数字、正则表达式、或二者的组合表示。

选项

-e

进行多项编辑即对输入行应用多条sed命令时使用

-n

取消默认的输出---因为默认sed是会对档案进行默认的输出的。有时未避免重复输出就需要加上-n选项。

-f

指定sed脚本的文件名

-r

use extended regular expressions  in the script

在脚本中使用扩展正则表达式

 -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>


0 0
原创粉丝点击