Ben kullanırsanız cat -n text.txtotomatik hatları numara, nasıl o zaman sadece belirli numaralı satırları göstermek için komutu yoktur.
tail+ headayrıca bunu yapabilirsinizawk
Ben kullanırsanız cat -n text.txtotomatik hatları numara, nasıl o zaman sadece belirli numaralı satırları göstermek için komutu yoktur.
tail+ headayrı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 -nhatta 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.
catolsa
catOP 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 -nve 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, $1birinci 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 -nOrijinal 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