Ben kullanırsanız cat -n text.txt
otomatik hatları numara, nasıl o zaman sadece belirli numaralı satırları göstermek için komutu yoktur.
tail
+ head
ayrıca bunu yapabilirsinizawk
Ben kullanırsanız cat -n text.txt
otomatik hatları numara, nasıl o zaman sadece belirli numaralı satırları göstermek için komutu yoktur.
tail
+ head
ayrıca bunu yapabilirsinizawk
Yanıtlar:
kullanım sed
kullanım
$ cat file
Line 1
Line 2
Line 3
Line 4
Line 5
Line 6
Line 7
Line 8
Line 9
Line 10
Bir satır yazdırmak için (5)
$ sed -n 5p file
Line 5
Birden fazla satır yazdırmak için (5 ve 8)
$ sed -n -e 5p -e 8p file
Line 5
Line 8
Belirli bir aralığı yazdırmak için (5 - 8)
$ sed -n 5,8p file
Line 5
Line 6
Line 7
Line 8
Diğer belirli satırlarla aralığı yazdırmak için (5 - 8 ve 10)
$ sed -n -e 5,8p -e 10p file
Line 5
Line 6
Line 7
Line 8
Line 10
Bunu yapmanın bir yolu kullanmaktır sed
:
cat -n text.txt | sed '11d'
buradaki 11, kaldırılmasını istediğiniz satırın numarasıdır.
Veya 11 hariç tümünü kaldırmak için:
cat -n text.txt | sed '11!d'
Seriler de mümkündür:
cat -n text.txt | sed '9,12!d'
Ve cat -n
hatta gerekli değil:
sed '9,12!d' text.txt
Hedeflere bağlı olarak ben kafa veya grep seviyorum
cat /var/log/syslog -n | head -n 50 | tail -n 10
41'den 50'ye kadar olan satırları döndürür.
veya
cat /var/log/syslog -n | grep " 50" -b10 -a10
40 - 60 arası satırları gösterecektir. grep yöntemindeki sorun, satır numaralarını doldurmak için hesap kullanmanız gerektiğidir (boşluklara dikkat edin)
Her ikisi de günlük dosyalarını ayrıştırmak için oldukça kullanışlıdır.
cat
olsa
cat
OP ne istiyorsa
Diğerlerinin size gösterdiği gibi, kullanmaya gerek yoktur cat -n
. Diğer programlar sizin için yapacak. Ancak, çıktısını gerçekten ayrıştırmanız cat -n
ve yalnızca belirli satırları göstermeniz gerekiyorsa (örneğin, 4-8, 12 ve 42), şunları yapabilirsiniz:
$ cat -n file | awk '$1>=4 && $1<=8 || $1==12 || $1==42'
4 Line 4
5 Line 5
6 Line 6
7 Line 7
8 Line 8
12 Line 12
42 Line 42
Olarak awk
, $1
birinci alan, yani, 4 ve 8 (dahil) ya da ii) 12 veya iii) 42 arasında, bu komutu,, ilk alanları I olan bütün çizgiler).
cat -n
Orijinal satırları dosyadan almak için eklenen alanı da kaldırmak isterseniz , şunları yapabilirsiniz:
$ cat -n file | awk '$1>=4 && $1<=8 || $1==12 || $1==42{sub(/^\s*[0-9]+\s*/,""); print}'
Line 4
Line 5
Line 6
Line 7
Line 8
Line 12
Line 42