2012-05-05 8 views

Odpowiedz

72

Można łączyć tail i head:

$ tail -n +3 file.txt | head -n -4 > file.txt.new && mv file.txt.new file.txt 
+10

+1 za nieużywanie 'kot'. –

+0

Dziękuję bardzo. – rebca

+1

Zauważ, że z Git Bash pod Windows, 'tail -n + 3' działa, ale' head -n -4' mówi 'nieprawidłową liczbę linii'. Wygląda jak błąd (być może używana jest stara wersja 'head'). –

16

przedniego i tylnego

cat input.txt | tail -n +3 | head -n -4 

Sed Rozwiązanie

cat input.txt | sed '1,2d' | sed -n -e :a -e '1,4!{P;N;D;};N;ba' 
+4

Nie musisz używać 'cat':' tail -n +3 input.txt | ... 'działa idealnie (i tak samo dla' sed'). – huon

+0

... Dzięki ... ... – Debaditya

+3

Dziękuję za rozwiązanie sed; Potrzebowałem go na maszynie, która nie dopuszcza ujemnych numerów linii dla głowy. (Nawiasem mówiąc, 4 w pierwszym poleceniu należy zanegować.) – eswald

2

Można zadzwonić edytor ex z wiersza poleceń bash, używając poniższej próbki. Zauważ, że używa here document, aby zakończyć listę poleceń na przykład.

ex text.file << EOF 
1,2d 
$ 
-3,.d 
x 
EOF 
7

Jest to najszybszy sposób znalazłem:

sed -i 1,2d filename 
+0

-i jest nieprawidłowy –

+0

'-i rozszerzenie Edycja plików w miejscu, zapisywanie kopii zapasowych z określonym rozszerzeniem. Jeśli podane zostanie rozszerzenie o zerowej długości, kopia zapasowa nie zostanie zapisana. Nie zaleca się dodawania przedłużenia długości na zero podczas edycji plików w miejscu, ponieważ ryzykujesz uszkodzenie lub częściową zawartość w sytuacjach, gdy miejsce na dysku jest wyczerpane, itp. " – finferflu

+0

Tak mówi dokumentacja, przynajmniej implementacja sed na moim systemie ... – finferflu

Powiązane problemy