您是否有方法可以在 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=
可能需要的内容 - 用逗号分隔它们。