bạn chỉ có thể sử dụng bash nếu hệ thống của bạn có. Ý tưởng cơ bản đằng sau là đặt số lượng và tăng số lượng này trong khi lặp lại tệp.
1) xóa tất cả các hàng ngoại trừ người đầu tiên từ một tập tin
read -r line < file; echo "$line" > temp && mv temp file
2) xóa một hàng từ tập tin với một số dòng
declare -i count=0
while read -r line
do
((count++))
case "$count" in
10) continue;;
*) echo "$line";;
esac
done <file> temp && mv temp file
3) xóa các hàng từ một tập tin với một loạt của các số dòng, ví dụ: từ 10 đến 20
declare -i count=0
while read -r line
do
((count++))
if (($c < 10 && $c > 20));then
echo "$line";;
fi
done <file> temp && mv temp file
Nguồn
2011-04-21 23:37:19
Để xóa * tất cả các dòng nhưng * * đầu tiên, 'sed' 2, $ d 'filename' hoặc' sed '1! d' filen ame', hoặc 'sed -n' 1p 'filename'. – Beta
@Beta, đầu tiên hai là chính xác, nhưng thứ ba sẽ chỉ in dòng đầu tiên. – dubiousjim
@dubiousjim: 'In dòng đầu tiên chỉ' giống như' xóa tất cả các dòng nhưng đầu tiên' đó là lý do tại sao 'sed -n '1p'' cũng chính xác. – anubhava