여러 패턴을 파악하여 같은 줄에 인쇄하려면 어떻게 해야 합니까?

여러 패턴을 파악하여 같은 줄에 인쇄하려면 어떻게 해야 합니까?

여러 개의 파일이 있고 모두 동일한 데이터 패턴을 따릅니다.

이것이 내가 추출하려는 패턴이라고 가정해 보겠습니다.

First part of text...patternA......Second part of text.....patternB.....Third part of text....patternC.....End part of text

현재 나는 이것을 사용하고 있습니다 :

grep -P -o ".{0,5}patternA|.{0,5}patternB.{0,5}|patternC.{0,5}" filename.txt

내가 얻는 결과는 다음과 같습니다.

1111 patternA
2222 patternB 2222
patternC 3333

내가 정말로 원하는 결과는 다음과 같습니다.

1111 patternA 2222 patternB 2222 patternC 3333

각 패턴 끝에 있는 개행 문자를 제거하는 방법을 알 수 없는 것 같습니다.

어떻게 해야 하나요?

답변1

3개 필드가 모두 항상 존재한다는 것을 알고 있다면 "붙여넣기"를 사용하여 다음을 시도해 볼 수 있습니다.

grep -P -o ".{0,5}patternA|.{0,5}patternB.{0,5}|patternC.{0,5}" filename.txt | paste - - -

답변2

sed캡처링 그룹을 사용하여 패턴과 일치하는 라인 부분을 출력에 복사하는 데 사용됩니다 .

sed -r -n 's/.*(.{0,5}patternA).*(.{0,5}patternB.{0,5}).*(patternC.{0,5}).*/\1 \2 \3/p' filename.txt

이는 선의 패턴이 항상 이 순서로 되어 있다고 가정합니다.

답변3

그리고 column:

COLUMN(1)                 BSD General Commands Manual                COLUMN(1)

NAME
     column -- columnate lists

SYNOPSIS
     column [-tx] [-c columns] [-s sep] [file ...]

DESCRIPTION
     The column utility formats its input into multiple columns.  Rows are
     filled before columns.  Input is taken from file operands, or, by
     default, from the standard input.  Empty lines are ignored.

예를 들어 ( 출력을 파이프 할 수 있다는 것을 무료로 사용하여 cat시연 ):grepcolumn

$ cat example
Fuzzy
wuzzy
was
a
bear
$ cat example | column
Fuzzy   wuzzy   was a   bear

관련 정보