我有一个巨大的数据文件.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