如何使用sed删除文件的第一行?

use*_*413 2 command-line bash sed

以下几行将essay_i.txt 的内容附加到essay1.txt 的末尾;

touch essay1.txt
for (( i = 1 ; i <= 10 ; i++ )); do
sed '2p' essay_"${i}".txt >> essay1.txt
done
Run Code Online (Sandbox Code Playgroud)

我应该如何更改它以便不复制每个 essay_i.txt 的第一行(即只复制第 2 行->结束)?

Ste*_*zzo 8

要取消第一行,请使用'1d'(即第 1 行,删除):

touch essay1.txt
for file in essay_*; do
  sed '1d' $file >> essay1.txt
done
Run Code Online (Sandbox Code Playgroud)

输出将是

~$ cat essay1.txt 
line 2 from essay 1
line 3 from essay 1
line 2 from essay 2
line 3 from essay 2
...
Run Code Online (Sandbox Code Playgroud)

对于essay_*当前工作目录中命名的所有文件。


除了使用sed,您还可以使用tail来完成这项工作:

tail -n +2 $file >> essay1.txt
Run Code Online (Sandbox Code Playgroud)

哪里+2意味着从第二行开始(-n 2将是最后两行)。