使用sed删除文件中的空行
上面是我的数据文件 里面有空行 这些空行中没有空格或制表符 我想删除数据中的所有空行 我做了一次搜索,给出了完美的答案 在此之前,我自己编写了两个sed代码:使用sed删除文件中的空行,sed,replace,substitution,Sed,Replace,Substitution,上面是我的数据文件 里面有空行 这些空行中没有空格或制表符 我想删除数据中的所有空行 我做了一次搜索,给出了完美的答案 在此之前,我自己编写了两个sed代码: France 211 55 Europe Japan 144 120 Asia Germany 96 61 Europe England 94 56 Europe Taiwan 55 144 Asia North Korea 44 2134 Asia 我试过awk gsub,也没有成功 sed -
France 211 55 Europe
Japan 144 120 Asia
Germany 96 61 Europe
England 94 56 Europe
Taiwan 55 144 Asia
North Korea 44 2134 Asia
我试过awk gsub,也没有成功
sed -r 's/\n\n+/\n/g' cou.data
sed 's/\n\n\n*/\n/g' cou.data
但它们不起作用,什么都不会改变
我的sed代码哪里做错了?使用以下
sed
删除所有空行
sed'/./!d'cou数据
说明:
匹配任何字符,包括换行符/./
否定选择器,即使命令应用于与选择器不匹配的行,在本例中为空行代码>
删除所选行d
是输入文件的路径cou.data
你哪里出错了? 以下摘录自各国: sed通过在每一行输入上执行以下循环来运行:首先,sed从输入流中读取一行,删除任何尾随换行符,并将其放置在模式空间中然后执行命令;每个命令都可以有一个与其关联的地址:地址是一种条件代码,只有在执行命令之前验证了条件,才能执行命令 当到达脚本结尾时,除非使用-n选项,否则模式空间的内容将打印到输出流,如果删除了尾随换行符。8然后下一个循环开始于下一个输入行 我故意为那些与您的
sed
示例不起作用的原因相关的部分壮胆。举个例子:
- 他们似乎忽视了
一次只读取一行sed
- 您试图匹配的尾随换行符(
和\n\n
分别在第一个和第二个示例中),实际上并不存在。在执行regexp模式时,它们已被删除,然后在脚本结束时恢复\n\n\n
\n
永远不会匹配,除非您使用sed/awk的其他功能使用多行代码。我建议:grep。文件
这可能有助于sed'/^$/d'数据
?
awk '{ gsub(/\n\n*/, "\n"); print }' cou.data