패턴이 일치하는 상위 및 하위 행이 있는 중간 행을 검색하시겠습니까?

패턴이 일치하는 상위 및 하위 행이 있는 중간 행을 검색하시겠습니까?

다음과 같은 데이터 세트(예: 파일)가 있습니다.

4.048   5.9392765
4.051   5.9392765
4.068   5.9392765
4.293   5.9392765
4.3 "A random string"
4.331   5.9392765
4.429   6.0137865
4.609   6.0303125
4.662   6.0303125
5.626   6.1261205
5.815   6.1261205
6.347   6.1261205
6.543   6.1261205
6.7 "A random string"
7.420   6.1611095
7.526   6.2542085
7.541   6.2698285
7.556   6.2698285
7.928   6.2698285

가운데 행의 두 번째 필드가 숫자가 아닌 문자열인 세 행(행)의 그룹을 추출하고 싶습니다. 예를 들어, 위 입력의 경우 다음과 같은 출력을 얻고 싶습니다.

4.293   5.9392765
4.3 "A random string"
4.331   5.9392765
------------------------
6.543   6.1261205
6.7 "A random string"
7.420   6.1611095

어떻게 해야 하나요?

답변1

더 간단한 답변:

grep -C1 '"'문서

따옴표 문자( )가 포함된 줄을 찾아 "앞뒤에 한 줄씩 표시합니다.

답변2

grep해결책:

grep -C1 -E '^[0-9]+\.[0-9]+[[:space:]]+[^0-9[:space:]]+' file
  • -C NUM- NUM출력 컨텍스트 줄을 인쇄합니다.
  • -E- 확장 정규식
  • [^0-9[:space:]]+- [:space:]공백이나 숫자를 제외한 모든 문자 와 일치합니다.[0-9]

산출:

51174.29300 2265.9392765
51174.3 "A random string"
51174.33100 2265.9392765
--
51176.54300 2266.1261205
51176.7 "A random string"
51177.42000 2266.1611095

관련 정보