【发布时间】:2012-06-28 22:16:32
【问题描述】:
如何删除文本文件的第一行(!),如果它是空的,例如使用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
【问题讨论】:
-
就地是什么意思?如果您的意思是“不生成临时文件”,我实际上不在乎。我想我可以在之后重命名生成的文件。
-
是的,我想知道您是否想就地修改文件本身。
-
顺便说一句,我也试过
sed '1 /^$/d',因为 sed 手册说,可以通过在命令前加上行号来限制命令。但是,我的 GNU sed 不喜欢这样。有什么提示吗? -
对不起,我更喜欢
awk,而不是sed,我只是偶尔使用。 -
我认为
awk解决方案可以满足您的需求,不是吗?