如何在linux中删除标题而不删除其他行?

如何在linux中删除标题而不删除其他行?

我有一个巨大的数据文件.txt 看起来像:

calls...
12311 34213 13344 12345 34532
23345 24445 22445 12344 12333
34456 22211 12334 12234 23344
23345 24445 22445 12344 12333

我想删除第一行(这是写的调用......那里)。

我使用了这个命令:

sed '1d' input.txt > output.txt

这会删除“调用...”。但问题是其他一些行也被删除了。是否有任何机构有任何其他建议可以帮助我删除呼叫...而不删除内部的其他行?当我使用此命令时,我的真实数据有 117,000 行和 10,000 列,则行数为 68,645 ,而它必须为 116,999 。当我在小数据中尝试 sed 时,就像我在这里展示的示例一样,行数不会改变,而在我的真实数据中却会改变。我真的很困惑为什么?

答案1

你可以使用tail

tail -n +2 input.txt > output.txt

将打印文件中从第二行开始的行(注意 + 号)

答案2

您还可以使用awk命令:

示例1:

awk '{gsub("^calls\.+", "");print}' input.txt > output.txt

将从 中删除行input.txt并放入output.txt.

示例2:

awk '!/^calls\.+/{print}' input.txt > output.txt

awk这将打印除命令中提供的模式之外的所有行。

答案3

使用模式寻址

使用 GNU sed,您可以使用模式地址来限制您的命令。例如:

sed -r '/^calls\.{3}$/d' input.txt

将仅删除以匹配模式开头的行。

答案4

这是我使用的:

df | awk ' {if(NR>1) print}'
cat file | awk ' {if(NR>1) print}'

或者在脚本中:

#!/bin/awk -f
{
   if(NR>1) print
}

然后

cat file | nohead.awk

相关内容