从文件中读取行然后删除

Dan*_*anF 6 bash files read

如何从文件中读取一系列行,然后删除每一行?

显然我可以这样读:

while read -r line; do
echo $line
done < myfile.txt
Run Code Online (Sandbox Code Playgroud)

但如果我这样做:

while read -r line; do
echo $line
sed '1d' myfile.txt
done < myfile.txt
Run Code Online (Sandbox Code Playgroud)

我只得到第一行

我正在寻找一种优雅的方式来读取一行,对其进行处理,然后在移至文件的下一行之前将其删除。

Cos*_*tas 4

我宁愿sed只调用一次,然后在每一行迭代中调用。如果您想更改原始文件,可以将-i ( --in-place ) 选项添加到sed.

unset n
while read -r line; do
  echo $line
  : $((n++))
done < myfile.txt
sed "1,$n d" myfile.txt
Run Code Online (Sandbox Code Playgroud)