일치 항목을 찾았고 grep -e
해당 일치 항목의 모든 줄을 다시 다른 일치 항목으로 인쇄하고 싶다고 가정해 보겠습니다 ----
. 예를 들어 .
이것이 가능합니까, 아니면 이 작업을 수행하려면 다른 명령이나 다른 것을 사용해야 합니까 awk
?
예를 들어 다음 파일이 있는 경우:
----
Ticket Number: 5465415312
Software Services
Notepad
Text
Description:
My Notepad won't type text.
출력은 다음과 같아야 합니다.
----
Ticket Number: 5465415312
Software Services
다시 일치합니다 ----
.Software Services
답변1
sed -n '/----/,/Software Services/{p;/Software Services/q}' file
산출:
---- 티켓 번호: 5465415312 소프트웨어 서비스
답변2
다음을 사용하여 awk
이 작업을 수행하는 간단한 방법은 다음과 같습니다 .
awk '/^----$/,/^Software Services$/' file
길고 우회적인 접근 방식:
awk '/^----$/ { lines = "" }
{ lines = (lines == "" ? $0 : lines ORS $0) }
/^Software Services$/ { print lines }' file
즉, lines
4개의 대시 라인을 칠 때마다 저장된 문자열이 지워집니다. 그러면 현재 행이 항상 추가되고, 입력 데이터에서 "트리거링" 행을 찾으면 lines
무엇이 인쇄됩니다 .lines