删除bash中的第一行

Gui*_*mas 25 bash

你有没有办法在 bash shell 中快速删除文件的第一行?我的意思是使用 sed 或类似的东西。

pet*_*eth 42

长度相反的单衬垫,除非另有说明,否则便于携带。

sed(需要GNU sed-i):

sed -i 1d file
Run Code Online (Sandbox Code Playgroud)

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

ed file <<< $'1d\nw\nq'
Run Code Online (Sandbox Code Playgroud)

awk

awk NR\>1 infile > outfile
Run Code Online (Sandbox Code Playgroud)

tail

tail -n +2 infile > outfile
Run Code Online (Sandbox Code Playgroud)

read+ cat:

(read x; cat > outfile) < infile
Run Code Online (Sandbox Code Playgroud)

bash 内置:

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

  • 或`ed file1 &lt;&lt;&lt; $'1d\nw\nq'` (4认同)

Ign*_*ams 14

$ tail -n +2 <<< $'1\n2\n3'
2
3
Run Code Online (Sandbox Code Playgroud)