如何从文件中读取一系列行,然后删除每一行?
显然我可以这样读:
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)
我只得到第一行
我正在寻找一种优雅的方式来读取一行,对其进行处理,然后在移至文件的下一行之前将其删除。
我宁愿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)