Linux "cat" 명령을 사용하여 특정 줄만 숫자로 표시하는 방법

Linux "cat" 명령을 사용하여 특정 줄만 숫자로 표시하는 방법

cat -n text.txt자동 행 번호 매기기를 사용하는 경우 이 명령을 사용하여 특정 번호가 매겨진 행만 표시하려면 어떻게 해야 합니까?

답변1

사용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

답변2

한 가지 방법은 다음을 사용하는 것입니다 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

답변3

awk를 직접 사용할 수 있습니다.

awk 'NR==1' file.txt

"1"을 원하는 줄 번호로 바꾸십시오.

답변4

다른 사람들이 보여줬듯이 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

in awk$1첫 번째 필드이므로 이 명령은 첫 번째 필드가 i) 4 ~ 8(포함) 또는 ii) 12 또는 iii) 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

관련 정보