답변:
사용하다 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
내가 머리 나 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
하지만
cat
OP가 원하는 것을 할 수 없음
다른 사람들이 당신을 보여 주었 듯이 사용할 필요가 없습니다 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