精华内容
下载资源
问答
  • sed 删除空行 万次阅读
    2013-02-05 09:16:55

    只删除纯空行

    sed '/^\s*$/d' file


    删除纯空行和由空格组成的空行

    sed '/^[  ]*$/d' file

    更多相关内容
  • 使用sed删除空行

    2020-07-05 14:41:27
    I am trying to delete empty lines using sed: 我试图使用sed删除空行: sed '/^$/d' but I have no luck with i

    本文翻译自:Delete empty lines using sed

    I am trying to delete empty lines using sed: 我试图使用sed删除空行:

    sed '/^$/d'
    

    but I have no luck with it. 但我没有运气。

    For example, I have these lines: 例如,我有这些行:

    xxxxxx
    
    
    yyyyyy
    
    
    zzzzzz
    

    and I want it to be like: 我希望它像:

    xxxxxx
    yyyyyy
    zzzzzz
    

    What should be the code for this? 应该是什么代码?


    #1楼

    参考:https://stackoom.com/question/16s8Y/使用sed删除空行


    #2楼

    sed '/^$/d' should be fine, are you expecting to modify the file in place? sed '/^$/d'应该没问题,您是否希望修改文件到位? If so you should use the -i flag. 如果是这样,你应该使用-i标志。

    Maybe those lines are not empty, so if that's the case, look at this question Remove empty lines from txtfiles, remove spaces from start and end of line I believe that's what you're trying to achieve. 也许那些行不是空的,所以如果是这样的话,看看这个问题从txtfiles中删除空行,从行的开头和结尾删除空格我相信这是你想要实现的。


    #3楼

    You may have spaces or tabs in your "empty" line. 您的“空”行可能包含空格或制表符。 Use POSIX classes with sed to remove all lines containing only whitespace: 使用带有sed POSIX类删除仅包含空格的所有行:

    sed '/^[[:space:]]*$/d'
    

    A shorter version that uses ERE, for example with gnu sed: 使用ERE的较短版本,例如使用gnu sed:

    sed -r '/^\s*$/d'
    

    (Note that sed does NOT support PCRE.) (请注意,sed的支持PCRE)。


    #4楼

    你可以说:

    sed -n '/ / p' filename    #there is a space between '//'
    

    #5楼

    With help from the accepted answer here and the accepted answer above, I have used: 此处接受的答案和上面接受的答案的帮助下,我使用了:

    $ sed 's/^ *//; s/ *$//; /^$/d; /^\s*$/d' file.txt > output.txt
    
    `s/^ *//`  => left trim
    `s/ *$//`  => right trim
    `/^$/d`    => remove empty line
    `/^\s*$/d` => delete lines which may contain white space
    

    This covers all the bases and works perfectly for my needs. 这涵盖了所有基础,完美地满足了我的需求。 Kudos to the original posters @Kent and @kev 感谢@Kent和@kev的原创海报


    #6楼

    您也可以使用“grep”执行类似的操作:

    egrep -v "^$" file.txt
    
    展开全文
  • Linux应用之sed删除空行

    千次阅读 2019-09-16 17:30:04
    文章目录一、sed编辑器介绍二、sed删除空白行1. 删除连续的空白行2. 删除开头的空白行3. 删除结尾的空白行4. 删除HTML标签 一、sed编辑器介绍 sed编辑器被称作流编辑器(stream editor),和普通的交互式文本编辑器...

    一、sed编辑器介绍

    sed编辑器被称作流编辑器(stream editor),和普通的交互式文本编辑器恰好相反。在交互式文本编辑器中(比如vim),你可以用键盘命令来交互式插入、删除或替换数据中的文本。流编辑器则会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。
    sed编辑器可以根据命令来处理数据流中的数据,这些命令要么从命令行中输入,要么存储在一个命令文本文件中(即脚本文件)。sed编辑器会执行下列操作:

    • 依次从输入中读取一行数据
    • 根据所提供的编辑器命令匹配数据
    • 按照命令修改流中的数据
    • 将新的输数据输出到STDOUT

    在流编辑器将所有命令与一行数据匹配完毕后,它会读取下一行数据并重复这个过程,直至处理完所有数据后终止。
    sed命令的格式如下

    sed options script file

    二、sed删除空白行

    说明:在使用之前假设读者有基本的正则知识,如果没有,请自行学习

    1. 删除连续的空白行

    如果我们的文本各行之间有不定数量的空白行,阅读起来颇有些费力,且不美观,我们希望各行之间间隔是固定的,比如仅有一行空白行的间隔,我们可以用到下面脚本:

    /./ , /^$/!d

    区间/./到/^$/的开始抵制会匹配任何含有至少一个字符的行,区间的结束地址会匹配一个空行,在这个区间的行不会被删除。
    实例

    ~$ cat example1
    Such stories set us thinking, 
    
    wondering what we should do under similar circumstances. 
    
    
    What events, what experiences, 
    
    what associations should we crowd into those last hours as mortal beings, 
    
    
    what regrets?
    ~$ sed '/./,/^$/!d' example1
    Such stories set us thinking, 
    
    wondering what we should do under similar circumstances. 
    
    What events, what experiences, 
    
    what associations should we crowd into those last hours as mortal beings, 
    
    what regrets?
    ~$
    

    原来不规则的空白行变得均匀了。该示例中最后一行之后无内容,如果最后一行文字之后还有空白行,处理之后一会显示一行空白行。

    2. 删除开头的空白行

    如果一段文本中开头有多行空白,显然会给阅读带来不便。删除开头的空白行与上面思路比较相似,我们可以用到下面脚本:

    /./ , $!d

    这个脚本将会对从有字符的行开始,一直到结束,这样一个区间的内容都不会被删除,也就是第一行正式内容之前的空白都会被删除。
    实例

    ~$ cat example2
    
    
    
    Such stories set us thinking, 
    
    wondering what we should do under similar circumstances. 
    What events, what experiences, 
    what associations should we crowd into those last hours as mortal beings, 
    what regrets?
    ~$ sed '/./, $!d' example2
    Such stories set us thinking, 
    
    wondering what we should do under similar circumstances. 
    What events, what experiences, 
    what associations should we crowd into those last hours as mortal beings, 
    what regrets?
    ~$
    

    3. 删除结尾的空白行

    删除连续的空白行中我们提到,对最后一行的处理也会包含一行空白行,也许这并不是我们想要的结果,我们希望最后一行不含空白行,我们可以用到下面脚本:

    sed ‘{
    :start
    /^\n*$/{$d; N; b start}
    }’

    这段脚本可能稍微显得有些复杂,在正常脚本的花括号中还有花括号,这允许你在整个命令脚本中将一些命令分组,该分组命令会被应用到指定的地址上。这里用到了分支标签b,可以实现跳转,就像C语言中的循环。其含义就是如果找到了一行它仅有一个换行符,而且还是最后一行,那么就删除它,否则会继续往后匹配。
    实例

    ~$ cat example3
    Such stories set us thinking, 
    
    wondering what we should do under similar circumstances. 
    
    What events, what experiences, 
    what associations should we crowd into those last hours as mortal beings, 
    what regrets?
    
    ~$ sed '{
    :start
    /^\n*$/{$d; N; b start}
    }' example3
    Such stories set us thinking, 
    
    wondering what we should do under similar circumstances. 
    
    What events, what experiences, 
    what associations should we crowd into those last hours as mortal beings, 
    what regrets?
    ~$
    

    4. 删除HTML标签

    应用中我们不少会从命令行去get一些网页信息,其中包含了大量的html标签信息,不利于我们获取其中的主要信息,我们需要将其格式化为普通文本,我们可以用到下面脚本:

    s/ < [^>]*>//g ; /^$/d
    **实例**
    ~$ cat example4
    <html>
    <head>
    <title>This is the page</title>
    </head>
    <body>
    <p>
    This is the first line in the web page
    This should provide some useful
    information to use in our sed script
    </p>
    </body>
    </html>
    ~$ sed -e 's/<[^>]*>//g ; /^$/d' data.txt
    This is the page
    This is the first line in the web page
    This should provide some useful
    information to use in our sed script
    ~$
    

    说明:example4中的内容每一行之后立即换行,不含任何空格或者tab,读者可以尝试,在一些标签后面加一些空格或者tab,得到的内容将会不一样。

    我们留心会发现,这里的所有内容都是五缩进的,然而我们标准的html结构中通常是包含各种缩进关系的,比如下面的例子

    ~$ cat example5
    <html>
    	<head>
    		<title>This is the page</title>
    	</head>
    		<body>
    		<p>
    		This is the first line in the web page
    		This should provide some useful
    		information to use in our sed script
    		</p>
    	</body>
    </html>
    ~$ sed -e 's/<[^>]*>//g ; /^$/d' example5
    	
    		This is the page
    	
    		
    		
    		This is the first line in the web page
    		This should provide some useful
    		information to use in our sed script
    		
    	
    ~$
    

    标签都删掉了,但是空行却任然存在,为什么?我们将上述输出保存,然后使用cat -t看看里面的具体内容:

    ~$ sed -e 's/<[^>]*>//g ; /^$/d' data.txt > test
    ~$ cat -t test 
    ^I
    ^I^IThis is the page
    ^I
    ^I^I
    ^I^I
    ^I^IThis is the first line in the web page
    ^I^IThis should provide some useful
    ^I^Iinformation to use in our sed script
    ^I^I
    ^I
    ~$
    

    可以看到,文本中的每个空行是实际上都有一个不可打印字符^I,它表示一个TAB,他在执行正则匹配/^$/d时 ,二则并不匹配,所以删除空行操作并未执行。所以需要对该规则进行修改:

    s/ < [^>]*>//g ; /^ [[:space:]]*$/d
    区别在于空白行匹配中间增加了 [[:space]]*,[[:space]]表示任意空白字符,包括空格、制表符、NL、FF、VT和CR。执行效果如下:
    ~$ sed -e 's/<[^>]*>//g ; /^[[:space:]]*$/d' example5
    		This is the page
    		This is the first line in the web page
    		This should provide some useful
    		information to use in our sed script
    ~$
    

    可以看到,空行都删除完了,但是每行之间任然有一部分空白,我们可以在上面的基础上再次处理从而是删掉该部分空白,修改规则如下

    s/ < [^>]*>//g ; /^ [[:space:]]*$/d ; s/^[[:space:]]*$//g
    我们对每一行开始的空格或者TAB进行匹配替换,从而达到删除的效果:
    ~$ sed -e 's/<[^>]*>//g ; /^[[:space:]]*$/d; s/^[[:space:]]*//g' example5
    This is the page
    This is the first line in the web page
    This should provide some useful
    information to use in our sed script
    ~$
    

    现在效果好多了,你可以将输出重定向到你指定的文件中去。

    展开全文
  • 可以通过Linux命令sed实现去除这些空行。 如果都是空行,而空行中没有字符的情况(但是不建议这样写) sed -i ‘/^$/d’ test.txt 建议加入 [[:space:]] 用以匹配空格、tab、^M 等特殊字符 sed -i ‘/1*$/d’ test.txt...
    sed '/^\s*$/d' storage.txt
    
    
    ```bash
    有时候生成的数据文件中有空行,或者在空行中还有空格、tab、特殊字符(如:^M)等,而且文件又特别大,那怎么处理呢?可以通过Linux命令sed实现去除这些空行。
    
    如果都是空行,而空行中没有字符的情况(但是不建议这样写)
    sed -i '/^$/d' test.txt
    
    建议加入 [[:space:]] 用以匹配空格、tab、^M 等特殊字符
    sed -i '/^[[:space:]]*$/d' test.txt
    
    上述建议方式的简化版(本人比较喜爱的一种方式,但特殊字符只匹配过'^M',其他未验证)
    sed -i '/^\s*$/d' test.txt
    
     * (星号)用以匹配空格、tab、'^M'类特殊字符等至少零次
    
    
    原文链接:https://blog.csdn.net/qq_39937778/article/details/90024085
    
    1.进入命令模式。vim的命令模式,就是在编辑模式下输入":",光标就会跳到屏幕最后一行,并在那里显示冒号,此时就已经进入命令模式。
    命令模式的内容均显示在屏幕的最后一行,按下回车键,vim执行命令。
    
    2.在命令模式下输入下列字符:输入:%s/^M$//g
    
    3.回车。即会自动删除该文件中的所有 ^M 字符。
    
    删除行尾空格的命令: :%s/\s\+$//
    
    这句命令到底是什么意思呢?% 指匹配整个文件,s 是置换的意思,^M 注意要用 Ctrl + V Ctrl + M 来输入,M 后面的 $ 代表匹配行尾的内容,最后的 g 则表示每行中匹配到的内容都要置换。理解了命令的含义,就好变通使用了,比如说,要将某个文件中的 Vim 全部替换成 VIM,则可以使用这样的命令::%s/Vim/VIM/g。
    
    
    vim删除^M
    
    展开全文
  • sed删除代码空行和删去行尾空白

    千次阅读 2021-02-26 16:34:29
    删除空行的方法有很多种,这里只是为了比较sed命令删除空行及行尾空白
  • sed删除空行、换行符的方法

    千次阅读 2019-03-21 13:14:31
    sed '/^\s*$/d' file.txt #删除空行
  • sed删除空行,#开头的行,以及第一行

    千次阅读 2019-08-27 18:29:17
    ^表示行头 删除空行 sed "/^$/d" 删除#开头的行 sed "/^#/d" 删除第一行: sed -i "1d" a.txt d是delete的缩写
  • #删除注释行 $ sed '/^#/d' <file> $ sed '/#/d' <file> # 删除空行 $ sed '/^$/d' <file> # 删除空行并写入到文件 $ sed -i '/^$/d' <file>
  • /^$/d 删除空行 [01:23:10 rooter@C8-3-55 Packages]#sed '/^#/d;/^[[:space:]]/d;/^$/d' /etc/httpd/conf/httpd.conf ServerRoot "/etc/httpd" Listen 80 Include conf.modules.d/*.conf User apache Group ...
  • sed实战之——删除空行(包括由空格组成的空行) 2011-01-21 星期五 晴朗 首先要隆重介绍我们的测试文件,因为这是非常特殊的文件: forrest@ubuntu:~/Public$ cat -v wuhui.txt 1^M ^M 2^M ^M 3^M ^M 4^...
  • [root@ob1 scripts]# cat -An tt2.txt1jeyry$2 ^I$3jfdkjfdjk$4^Ikjfdkjfdkj$5 klfdklfdkl$6fdjkkjf dfj ^Ifkdjkjf$7^I$8ffdkkjfd$[root@ob1 scripts]# sed -rn '/^[ \t]*$/!s#^[ \t]*##gp' tt2.txt...
  • sed实战之——删除空行(包括由空格组成的空行) 首先要隆重介绍我们的测试文件,因为这是非常特殊的文件: forrest@ubuntu:~/Public$ cat -v wuhui.txt  1^M ^M 2^M  ^M 3^M  ^M 4^M  ^M 5^M  ^M 6^M
  • sed删除空行

    2015-01-29 17:09:00
    sed删除空行 我的代码如下:class Song def initialize(name) @name = name end def tell puts @name endendclass ZhouSong &lt; Song def initialize(name,artist) super(name) ...
  • linux shell sed 添加空行

    千次阅读 2020-03-25 09:23:07
    一、每行前后添加空行 1.每行后面添加一行空行: sedGtmp 每行前面添加一行空行sed'{x;p;x;}'tmp 2.每行后面添加两行空行sed'G;G'tmp 每行前面添加两行空行sed'{x;p;x;x;p;x;}'tmp 3.每行后面...
  • 本文,简要叙述了 sed 编辑器删除数据流中的所有空白。以及,有选择性的删除文本中的空白行的方法。
  • sed之添加空行

    2021-05-14 18:43:54
    sed之添加空行2019-07-041.每行后面添加一行空行sed G tmp每行前面添加一行空行sed ‘{x;p;x;}’ tmp2.每行后面添加两行空行sed ‘G;G’ tmp每行前面添加两行空行sed '{x;p;x;x;p;x;}' tmp3.每行后面添加三...
  • sed删除空行和注释行

    2016-03-31 13:08:00
    cat data | sed s/^" "*//g |sed /^$/d |sed /^#/d cat a | awd ... [ $? -eq 0 ] || exit 1 这就是结果 博主还在实习,第一次写博客,写的不好多提意见,谢谢 地址,转载时请带着 ...
  • 一、sed仅去除行里的空格(包含tab等) (1)删除前 (2)删除任意多个空格 ...
  • 有时候生成的数据文件中有空行,或者在空行中还有空格、tab、特殊字符(如:^M)等,而且文件有特别大,那怎么处理呢?可以通过Linux命令sed实现去除这些空行

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,350
精华内容 5,340
关键字:

sed删除空行