删除 bash 中的第一行

删除 bash 中的第一行

您是否有方法可以在 bash shell 中快速删除文件的第一行?我的意思是使用 sed 或类似的东西。

答案1

单行文本按长度相反的顺序排列,除非另有说明,否则均可移植。

sed(需要GNU sed-i

sed -i 1d file

ed(例如需要bash扩展$'...'和这里的字符串):

ed file <<< $'1d\nw\nq'

awk

awk NR\>1 infile > outfile

tail

tail -n +2 infile > outfile

read+ cat

(read x; cat > outfile) < infile

bash内置:

while IFS= read -r; do ((i++)) && printf %s\\n "$REPLY" >> outfile; done < infile

答案2

$ tail -n +2 <<< $'1\n2\n3'
2
3

答案3

使用 dd

fn="大文件.txt"
fll=$(( $(head -n 1 $fn | wc -c) + 1))
dd if="$fn" of="${fn}.out" bs=1M iflags=skip_bytes skip=$fll
echo "文件相差 $(( $(find $fn* -printf "%s - \n" ; echo "0") )) 字节。$fn 的第一行是 $fll 字节。"

添加任何iflags=oflags=可能需要的内容 - 用逗号分隔它们。

相关内容