<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://www.jackxiang.com/post//</link>
<title><![CDATA[[实践OK]vim/EditPlus/Sublime/Vscode/sed 删除空行的正则表达式(Windows)]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Fri, 26 Feb 2010 09:25:54 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	零、linux使用grep删除空行：<br/><textarea name="code" class="php" rows="15" cols="100">grep -v ^$ oldfile &gt;newfile</textarea><br/><br/>一、Vscode和Sublime的 正则一样的，选中.*那个正则标识，然后输入：<br/>^[ &#92;t]*&#92;n&nbsp;&nbsp;&nbsp;&nbsp;#表示以空格或者&#92;t制表符0次或者多次后并且还是以&#92;n换行符结尾的这些内容给找出来<br/><div class="code"><br/>^&#91; &#92;t&#93;*&#92;n&nbsp;&nbsp;&nbsp;&nbsp; <br/>^&#92;s*&#92;n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #输入时注意框里可能$前面有一个空格，导致无法匹配到空行。此问题经实践多次发现。<br/>^&#92;s*$&#92;n&nbsp;&nbsp;&nbsp;&nbsp; <br/></div><br/><br/>Macbook上Vscode采用option+command+F，打开查找。<br/><br/>VS Code插件介绍(七)懒人插件-Hungry Delete &amp; hungry-backspace，注意只是批量删除不要的空行：<br/>Hungry Delete ，作者jasonlhy 目前下载量1000都不到。<br/>Hungry-backspace,作者eklemen，目前下载量只有一点点。<br/>这两个插件功能一样，绑定按键都有冲突，需要的同学，只要选其一安装就行了。<br/>安装：<br/>请搜索Hungray Delete或者hungry-backspace<br/>配置：<br/>两个插件都不需要配置<br/>使用：<br/>使用上两个略有区别。 除了直接按backspace按键自动清理空白区域之外，Hungry Delete多了一个Ctrl+backspace(Win/Linnux),Alt+Backspace(Mac)的功能。具体使用，大家可以自己玩下。<br/><br/><br/>二、[实践OK]vim刪除空白行，刪除沒有內容的空行，刪除包含有空格組成的空行。<br/>vim中：<br/>:g/^[ &#92;t]*&#92;n/d&nbsp;&nbsp;<br/>和：<br/>:%s/^[ &#92;t]*&#92;n//g&nbsp;&nbsp;<br/>的区别是？<br/>答：<br/>这两个 Vim 命令都涉及到删除空白行的操作，但使用了不同的命令和方法：<br/>1. `:g/^[ &#92;t]*&#92;n/d`<br/>&nbsp;&nbsp; 这个命令使用了全局（`g`）命令，对于匹配正则表达式 `^[ &#92;t]*&#92;n` 的每一行执行删除操作（`d`）。正则表达式的含义是以零个或多个空格或制表符（`[ &#92;t]*`）开头，后面跟一个换行符（`&#92;n`）。因此，这个命令会删除所有空白行。<br/>2. `:%s/^[ &#92;t]*&#92;n//g`<br/>&nbsp;&nbsp; 这个命令使用了替换（`%s`）命令，对于匹配正则表达式 `^[ &#92;t]*&#92;n` 的部分执行替换操作。替换为空字符串，表示将匹配的内容删除。正则表达式的含义与上面一样，匹配以零个或多个空格或制表符开头，后面跟一个换行符的内容。`%` 符号表示对整个文档执行替换操作，而 `g` 标志表示全局替换，会替换所有匹配。<br/>总结区别：<br/>- `:g/^[ &#92;t]*&#92;n/d` 使用了全局删除命令，逐行删除所有空白行。<br/>- `:%s/^[ &#92;t]*&#92;n//g` 使用了全局替换命令，将匹配的内容替换为空字符串，实际上也是逐行删除所有空白行。<br/>两者的效果是一样的，不同之处在于使用了不同的命令（删除 vs. 替换）。<br/><br/><br/><textarea name="code" class="php" rows="15" cols="100">
:g/^[ &#92;t]*&#92;n/d
</textarea><br/>刪除沒有內容的空行<br/>g/^$/d<br/><br/>刪除包含有空格組成的空行<br/>g/^&#92;s*$/d<br/><br/>除以空格或tab開頭到結尾的空行<br/>g/^[ &#124;&#92;t]*$/d<br/><br/><br/>使用 global 命令删除空白行<br/>Vim命令行模式下的 global 命令会在指定的范围内，标记所有匹配 pattern 的文本行，并对匹配的行上逐行执行 Ex 命令。<br/>匹配空白行的正则表达式可以用 ^&#92;s*$ 表示 ( ^ 表示行首， $ 表示行尾， &#92;s 表示任何空白字符，包括空格、制表符、换页符等， * 表示匹配零次或多次)。<br/>因此，使用 global 命令删除Vim打开文件中所有空白行的命令为 :g/^&#92;s*$/d<br/><br/>三、删除file文件里所有#开头的行和空行并输出处理后的文本内容：<br/>sed 删除空行:<br/>sed &#039;/^$/d&#039; file.txt <br/>abcdef adfd dfdf fdfd ab abc qqq<br/>abcdef adfd dfdf fdfd ab abc qqq<br/>abcdef adfd dfdf fdfd ab abc qqq<br/><br/><textarea name="code" class="php" rows="15" cols="100">
sed -e &#039;s/#.*//&#039; -e &#039;/^$/ d&#039; file
#分解为
sed -e &#039;s/#.*//&#039; file&nbsp;&nbsp;&nbsp;&nbsp;#删#打头的行
sed -e &#039;/^$/ d&#039; file&nbsp;&nbsp;&nbsp;&nbsp;#删空行并输出文件内容，真删得-i参数。
</textarea><br/><br/><br/>遇到一个比较大的文本文件需要去除空行，首先想到的自然是正则表达式。偷懒去网上找了几个删除空行的正则表达式，填到EditPlus里居然都不能用...而且大多数的正则表达式都用到了&quot;&#92;r&quot;，也就是回车符，关于&quot;&#92;n&quot;和&quot;&#92;r&quot;的区别我以后再写，今天只是为了记录一个正则表达式。<br/><br/>网上找的不行那就自己编吧，试验了几次最后写出一个能用的:<br/><div class="code"><br/>^&#91; &#92;t&#93;*&#92;n<br/></div><br/><br/>解释一下:<br/>1、^表示一行的开头。空行嘛，肯定在一行的开头就是空的...<br/><br/>2、[ &#92;t]，&quot;&#92;t&quot;前面还有一个空格。[]表示范围中的字符，里面写入空格和制表符(tab)，因为空行可能是由空格和制表符构成。<br/><br/>3、*表示0次或任意次。也就是说这个空行可以没有空格或制表符，也可以有任意个前面[]里的字符。<br/><br/>4、&#92;n就是换行符了。<br/><br/>这样在EditPlus里选择替换，然后勾选正则表达式，输入正则表达式，全部替换即可。不过EditPlus有个小bug，有时候不能一次替换完全，要多按几次&quot;全部替换&quot;才行...<br/>最终写成：<br/><div class="code"><br/>^&#91; &#92;t&#92;n&#93;*&#92;n<br/></div><br/>好像这样就能一次全部删除了<br/><br/>方法二：<br/>去掉所有的空行<br/><br/>搜索内容：&#92;n&#92;n<br/>替换内容：&#92;n<br/><br/>Ps：<br/>&lt;font size=2 &gt;dfdfd&lt;/font&gt;<br/>可以通过正则表达式：<br/><div class="code"><br/>&lt;font &#91;^&gt;&#93;*&gt;<br/></div><br/>匹配出来&lt;font size=2 &gt; ,Etc...
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [实践OK]vim/EditPlus/Sublime/Vscode/sed 删除空行的正则表达式(Windows)]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>