możesz po prostu użyć basha, jeśli masz go w systemie. Podstawową ideą jest ustawienie liczby i zwiększenie tej liczby podczas iterowania pliku.
1) usunięcie wszystkich rzędów, z wyjątkiem pierwszego z pliku
read -r line < file; echo "$line" > temp && mv temp file
2) Usuwanie wiersza z pliku z numerem linii
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) Usuwanie wierszy z pliku z zakresu z numerami linii przykład od 10 do 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
* aby usunąć wszystkie linie, ale pierwszy *, 'sed '2 $ d' filename' lub' sed '1! d' plikN ame', lub 'sed -n '1p' nazwa pliku'. – Beta
@ Beta, pierwsze dwa są dokładnie w porządku, ale trzeci wydrukuje tylko pierwszą linię. – dubiousjim
@dubiousjim: "Drukuj tylko pierwszy wiersz" jest takie samo, jak "usuń wszystkie linie oprócz pierwszego", dlatego też "sed -n" 1p'' również jest poprawne. – anubhava