질문
결과는 grep -A 4 davidson file.txt
다음과 같습니다.
davidson 0 27 |r|= 0.00244 e= [-0.04073962 0.42777949 0.44157777 0.45997235 0.45997235 0.51613738
0.55005554 0.5538866 0.5538866 0.57108874 0.63182267 0.68741162
0.68741186 0.69608 0.78013465 0.78013465 0.78042162 0.78688599
0.78688599 0.79381315 0.79381317 0.80049466 0.80049466 0.92062423
0.93453524 1.01356402 1.01942272] max|de|= 1.02 lindep= 0.809
--
davidson 1 54 |r|= 3.26 e= [-0.04073964 0.42777928 0.44157749 0.45997213 0.45997213 0.51613724
0.55005542 0.55388652 0.55388652 0.57108822 0.63182247 0.68741026
0.68741031 0.69607963 0.78013252 0.78013252 0.78042159 0.78688546
0.78688546 0.793812 0.793812 0.80049354 0.80049354 0.92062408
0.93453361 0.97904591 1.01356325 1.01945088] max|de|= -0.0404 lindep= 0.694
--
davidson 2 66 |r|= 0.523 e= [-0.04073964 0.02576398 0.42777928 0.44157749 0.45997212 0.45997212
0.51613724 0.55005542 0.55388652 0.55388652 0.57108822 0.63182247
0.68741006 0.68741006 0.69607962 0.78013218 0.78013218 0.78042159
0.78688546 0.78688546 0.79381179 0.79381179 0.80049292 0.80049292
0.92062408 0.93453351 1.01356275 1.01942294] max|de|= -0.953 lindep= 0.278
위의 세 가지 출력 세트 각각에 대해 첫 번째 행과 마지막 행만 원하는 경우에는 어떻게 되나요?davidson
특히 문자열의 각 인스턴스에 대해 행 1-5를 가져오는 대신 행 1과 5만 가져오고 싶습니다.
이전에 시도한 연구
내가 검색한 내용은 다음과 같습니다.
"grep -A"이지만 일부 줄을 삭제했습니다.
Google과 unix.se의 검색창을 사용하면 많은 결과를 얻지 못했습니다. 특히 이후 검색에서는이것). 다음은 Google 검색에서 찾은 몇 가지 결과와 내 문제가 해결되지 않는 것 같은 이유입니다.
- 유닉스 SE:패턴 A가 있는 grep 파일이지만 패턴 B가 있는 파일은 제외됩니다.(실제로는 매번 다르기 때문에 어떤 패턴을 제외해야 할지 모르겠습니다.)
- 스택 오버플로:grep은 여러 줄을 무시합니다.(답변은 질문에 제공된 특정 데이터에 대해 매우 "하드코드"되어 있으며 설명이 없습니다.)
- 스택 오버플로:grep의 -v 옵션을 -A 옵션과 결합(대답은 질문에 제공된 특정 데이터에 매우 "하드코드"되어 있습니다.)
- 스택 오버플로:패턴 매칭 후 N번째 행 추출(비슷하지만 제가 질문하는 것과는 다릅니다.)
- 스택 오버플로:Grep에서 줄 건너뛰기(이것은 점점 가까워지고 있지만 내가 요구하는 바도 아닙니다).
이 질문을 입력할 때 다음과 같은 질문이 나에게 제안되었습니다.
- 유닉스 SE:grep 문서에서 "group-separator" 옵션은 어디에 나열되어 있습니까?, 이는 다음을 나타냅니다.
- 스택 오버플로:컨텍스트 줄과 함께 grep을 사용할 때 "--" 줄 구분 기호를 어떻게 제거합니까?
하지만 이들 중 어느 것도 내 문제를 해결하지 못합니다.
답변1
안타깝게도 원시 데이터 샘플을 제공하지 않았지만 위의 출력을 사용하면 원하는 결과를 얻을 수 있을까요?
대신 grep -A4 ...
다음을 시도해 보세요.
awk '/davidson/{h=NR;line=$0} NR==h+4{print line;print $0}' file.txt