我的文件中有一个输出,其中包含空格,例如
daily/A3D05180000052121001 30698
daily/A3D05180000052200001 30698
daily/A3D05180000052203001 30698
我需要删除空行,我的输出应该是这样的
daily/A3D05180000052121001 30698
daily/A3D05180000052200001 30698
daily/A3D05180000052203001 30698
我尝试使用sed
sed -i -e '/./,$!d' -e :a -e '/^\n*$/{$d;N;ba' -e '}' "$FILESIZE3"
但它没有成功...任何人都可以帮我解决这个问题吗
答案1
sed '/^[[:space:]]*$/d' file >file.modified
这将删除所有file
完全空的行或仅包含类似空格的字符。在这种情况下,类似空格的字符包括 DOS 文本文件中每行末尾的回车符(由 Unix 工具处理时)、制表符和空格。结果数据将被写入file.modified
。
删除重定向并改为使用-i
选项将进行“就地”修改,file
而不是写入新文件,但请注意该选项是不可移植的,并且在不同的 Unix 系统上可能会以不同的方式工作(如何使用 sed -i (就地编辑)实现可移植性?)。
答案2
不确定您的其他人sed
在做什么,但这不是您正在寻找的吗?
host:~ # sed -e '/^$/d' file.txt
daily/A3D05180000052121001 30698
daily/A3D05180000052200001 30698
daily/A3D05180000052203001 30698
如果这不起作用,请澄清要求。
答案3
AWK表示:
awk '!/^$/{ print }' infile > outfile && mv outfile infile
答案4
在vim中,我使用全局命令来删除空行。不确定它对您的情况是否有帮助。
#:[range]g/pattern/cmd
该示例通过对匹配模式的每一行执行命令 cmd 来作用于指定的[范围](默认整个文件)(执行命令是以冒号开头,例如 vi 中的 :d 表示删除)。在你的情况下它可以是
:g/^$/d
如果中间有空格或制表符
:g/^[\s\t]*$/d
希望能帮助到你。