awk로 일부 줄을 추출하고 싶습니다. 다음 작업을 수행 할 수 있습니까? 
ls -l | awk "BEGIN FOR(i=122;i<=129;i++) FNR==i" 
라인 번호 122에서 129까지의 세부 정보를 어떻게 표시 할 수 있습니까?
설명
답변
 awk의 작동 방식을 이해하지 못했습니다. 지정된 “프로그램”은  항상  입력의 각 줄 (또는 어색한 “레코드”)에 대해 한 번씩 실행됩니다. FOR 또는 유사한 구문입니다. 다음을 사용하세요. 
상세한 방법
ls -l | awk "NR>=122 && NR<=129 { print }" 
더 간결한 방법
em>
ls -l | awk "NR==122,NR==129" 
 이것은 “번호 레코드”인 NR의 범위를 제공합니다. awk가 처리중인 현재 줄입니다. 
댓글
-  실제로 일반적인 
awk코드는 일반적으로ls -l | awk 'NR==122,NR==129'입니다. - awk를 사용하여 파일에서 마지막 100 줄을 가져 오는 명령은 무엇입니까?
 - @ShihabudheenKM 다음을 볼 수 있습니다 : stackoverflow.com/questions/12546919/ …
 
답변
 또 다른 방법은 sed를 사용하는 것입니다. : 
 
하지만 질문에서 알 수 있듯이 awk를 사용하는 것이 중요하다면 Zrajm의 답변에 대한 manatwork “의 의견을 참조하십시오. awk의 문서에 따르면
A pattern may consist of two patterns separated by a comma; in this case, the action is performed for all lines from an occurrence of the first pattern though an occurrence of the second.
따라서 원하는 경우 더 고급 조건을 만들 수도 있습니다. 예 :
ls -l | awk "NR==122,/foobar/" 
이렇게하면 122 행에서 출력이 시작되고 행에 “foobar”라는 단어입니다.
실제 사용 사례를 알려 주시면 더 나은 솔루션을 제공하는 답변에 도움을 드릴 수 있습니다. XY 문제 .
답변
 다른 방법 coreutils를 사용하여이 작업을 수행합니다 (awk 방법을 선호하지만) : 
ls -l | tail -n +122 | head -n 8 
답변
 awk "NR == 122,NR == 129{print $0}" file 
여기에서 파일의 122에서 129까지 줄을 추출 할 수 있습니다.
 $0는 122 줄에서 129 줄 사이의 전체 파일 데이터를 인쇄하는 데 사용됩니다. 
sed메서드는sed가awk보다 훨씬 작고로드 속도가 빠르기 때문입니다.