Linux “ cat ” 명령을 사용하여 숫자로 특정 줄만 표시하는 방법
On 2월 15, 2021 by admin 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”을 원하는 줄 번호로 바꿉니다.
설명
- 이것은 100 만 마일까지 최고의 답변이며 그보다 더 많은 사랑을받을 만합니다.
답변
내가 헤드 또는 grep을 좋아하는 목표에 따라
cat /var/log/syslog -n | head -n 50 | tail -n 10
41 ~ 50 행을 반환합니다.
또는
cat /var/log/syslog -n | grep " 50" -b10 -a10
40 ~ 60 행을 표시합니다. grep 메소드의 문제는 줄 번호를 채우는 데 계정을 사용해야합니다 (공백에주의)
둘 다 로그 파일을 구문 분석하는 데 매우 편리합니다.
댓글
- 두 예 모두
cat
가 필요하지 않습니다. - 글쎄요 .. .하지만 ….하지만 … ….. 더 좋은 방법이 있습니다. 그래도 cat 사용에 대한 질문이 있었기 때문에 사용했습니다.
-
cat
OP가 수행하는 작업을 ' 할 수 없습니다. 원하는 항목
답변
다른 사용자가 보여 주었 듯이 . 다른 프로그램이 당신을 위해 그것을 할 것입니다. 그러나 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
가 첫 번째 필드이므로이 명령은 첫 번째 필드가 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
댓글
- '
$1
대신NR
를 사용할 수 없습니까? - @SolomonUcko 물론입니다. 특히
cat -n
를 사용하여이 작업을 수행하는 방법을 시연했기 때문에cat -n
에서 제공하는 출력을 사용할 것이라고 생각했습니다. .
Answer
sed를 사용하여 하나의 숫자와 l 만 표시 할 수 있습니다. for 루프로 oop :
for line in 1 3 7 11; do sed -n ${line}p text.txt; done
tail
+head
도이 작업을 수행 할 수 있습니다.awk