如果一个文本文件的第一行是空的,我如何删除它,例如使用sed或其他标准UNIX工具。我尝试了以下命令:
sed '/^$/d' < somefile
但是这将删除第一个空行,而不是文件的第一行,如果它是空的,我可以给予sed一些关于行号的条件吗?
根据Levon的回答,我基于awk构建了这个小脚本:
#!/bin/bash
for FILE in $(find some_directory -name "*.csv")
do
echo Processing ${FILE}
awk '{if (NR==1 && NF==0) next};1' < ${FILE} > ${FILE}.killfirstline
mv ${FILE}.killfirstline ${FILE}
done
5条答案
按热度按时间pokxtpni1#
sed中最简单的事情是:
请注意,这不会删除包含所有空格的行,而只会删除只包含一个换行符的行。要删除空格:
并消除所有空白:
请注意,某些版本的
sed
需要在块中使用终止符,因此您可能需要添加分号。例如sed '1{/^$/d;}'
35g0bw712#
使用sed,尝试以下操作:
或进行适当的更改:
0qx6xfy63#
如果您不必就地执行此操作,则可以使用
awk
并将输出重定向到其他文件。这将打印文件的内容,除非它是第一行(
NR == 1
)并且不包含任何数据(NF == 0
)。NR
当前行号,NF
给定行上由空格/制表符分隔的字段数例如:
和
此
sed
解决方案也适用于就地更换:原始文件将以
.bak
扩展名保存cngwdvgl4#
如果实际目录下所有文件的第一行为空,则删除第一行:
find -type f | xargs sed -i -e '2,$b' -e '/^$/d'
mec1mxoz5#
这可能对您有用: