如何在Linux/UNIX下使用sed命令删除空行
时间:2020-01-09 10:44:04 来源:igfitidea点击:
如何删除所有空行,但无法找出相同的sed命令。
在Linux或者类Unix系统下,如何删除sed的所有空行?
sed是流编辑器,非常适合此类工作。
您需要在sed下使用d
命令作为删除功能。
Sed删除空行语法
使用sed删除空行的语法如下:
sed '/^$/d' <input-file> echo "LINE" | sed '/^$/d' echo "$VAR" | sed '/^$/d' sed '/^[[:space:]]*$/d' input_file
例子
因此,要从名为/tmp/data.txt的文件中删除所有空行,请执行:
$ sed '/^$/d' /tmp/data.txt
要将输出存储到另一个文件,请使用重定向运算符:
$ sed '/^$/d' /tmp/data.txt > /tmp/output.txt
或者使用-i选项更新文件:
$ sed -i '/^$/d' /tmp/data.txt
仅使用sed删除所有空白
考虑以下文件:
more /tmp/data.txt
输出示例:
This is a test foo bar theitroad Linux and Unix
要删除所有空行,请运行:
sed '/^[[:space:]]*$/d' input.file sed -i '/^[[:space:]]*$/d' input.file sed -r '/^\s*$/d' input.file > output.file sed -i '/^[[:space:]]*$/d' /tmp/data.txt
借助cat命令进行验证:
cat output.file cat /tmp/data.txt
删除与模式匹配的行
您还可以匹配要删除的单词或者样式。
例如
$ cat data.txt
输出:
This is a test Linux rulez Windows sucks Redhat is good server disro
要删除所有包含Windows单词的行,请执行:
$ sed '/Windows/d' /tmp/data.txt > /tmp/output.data.txt
GNU Sed支持-i选项来编辑文件:
$ sed -i '/Windows/d' /tmp/data.txt
关于awk的注意事项
与sed命令相比,awk命令提供了更简单的解决方案。
在此示例中,使用awk删除所有空行:
awk 'NF' my_input > my_output cat my_output
总结
简而言之,在Linux,macOS,* BSD和类Unix系统下,使用以下sed语法中的任何一种从文本文件中删除所有空行:
sed '/^[[:space:]]*$/d' input > output sed '/^\s*$/d' in > out sed '/^$/d' input > output sed -n '/^\s*$/!p' in.txt > out.txt