내가 사용하는 경우 cat -n text.txt
자동으로 줄을 번호 위하여, 어떻게 만 특정 번호가 매겨진 선을 표시하는 명령을 사용합니까.
답변
사용하다 sed
용법
$ cat file
Line 1
Line 2
Line 3
Line 4
Line 5
Line 6
Line 7
Line 8
Line 9
Line 10
한 줄을 인쇄하려면 (5)
$ sed -n 5p file
Line 5
여러 줄을 인쇄하려면 (5 및 8)
$ sed -n -e 5p -e 8p file
Line 5
Line 8
특정 범위를 인쇄하려면 (5-8)
$ sed -n 5,8p file
Line 5
Line 6
Line 7
Line 8
다른 특정 줄로 범위를 인쇄하려면 (5-8 및 10)
$ sed -n -e 5,8p -e 10p file
Line 5
Line 6
Line 7
Line 8
Line 10
답변
이를 수행하는 한 가지 방법은 다음을 사용하는 것입니다 sed
.
cat -n text.txt | sed '11d'
여기서 11은 제거하려는 행 번호입니다.
또는 11을 제외한 모든 것을 제거하려면 :
cat -n text.txt | sed '11!d'
범위도 가능합니다 :
cat -n text.txt | sed '9,12!d'
그리고 cat -n
필요하지도 않습니다 :
sed '9,12!d' text.txt
답변
awk를 똑바로 사용할 수 있습니다.
awk 'NR==1' file.txt
‘1’을 원하는 줄 번호로 바꿉니다.
답변
내가 머리 나 grep을 좋아하는 목표에 따라
cat /var/log/syslog -n | head -n 50 | tail -n 10
41 ~ 50 행을 반환합니다.
또는
cat /var/log/syslog -n | grep " 50" -b10 -a10
grep 방법의 문제점은 줄 번호를 채우는 데 계정을 사용해야한다는 것입니다 (공백에주의하십시오).
둘 다 로그 파일을 구문 분석하는 데 매우 편리합니다.
답변
다른 사람들이 당신을 보여 주었 듯이 사용할 필요가 없습니다 cat -n
. 다른 프로그램이 당신을 위해 그것을 할 것입니다. 그러나 실제로 출력을 구문 분석하고 cat -n
특정 행 (예 : 4-8, 12 및 42) 만 표시 해야하는 경우 다음을 수행 할 수 있습니다.
$ 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
에서는 awk
, $1
첫 번째 필드이므로, 4, 8 (포함 함) 또는 II) (12) 또는 ⅲ) (42) 사이의 명령 인쇄 모국어 필드 나 모든 라인).
cat -n
파일에서 원래 줄을 얻기 위해 추가 한 필드를 제거하려면 다음을 수행하십시오.
$ 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