2013-03-14 23 views

cevap

17

hattını 5 silmek için: Değişken çizgi sayısı için

sed -i '5d' file.txt 

: Dosya şöyle -i seçenek mevcut değilse

sed -i "${line}d" file.txt 

senin sed lezzetini, bir geçici dosyayla öykünebilirsin:

sed "${line}d" file.txt > file.tmp && mv file.tmp file.txt 
+1

POSIX sed, sed -i'yi desteklemiyor. Bourne'u burada kullandığımız için, bunun Linux olmadığı bir ihtimal var. Örneğin, Solaris/usr/bin/sed'de çalışmayacaktır. FWIW. –

+0

@jimmcnamara İyi nokta. Ek-olmayan cevapla güncellendi. –

+0

Benim için gayet iyi çalışıyor, teşekkürler. – user1731199

0

İşte şipşak kullanarak awk var:

lineToDelete=$1 
awk "NR != $lineToDelete" 
+0

Bu, dosyadaki satırı silmez. Bu satır haricinde dosyayı STDOUT'a yazdırır. – mivk

2

appointement tarafından silmek için (hat) numaralı:

sed -i '3d' input 

adıyla silmek için:

sed -i '/:Poker/d' input 

Eğer yerinde (-i) seçeneğiniz sisteminizde çalışmaz:

sed '/:Poker/d' input > input.tmp && mv input.tmp input 
+0

POSIX sed, sed -i'yi desteklemiyor. Bourne'u burada kullandığımız için, bunun Linux olmadığı bir ihtimal var. Örneğin, Solaris/usr/bin/sed'de çalışmayacaktır. –