그래서 다음과 같이 _posts
제목에 메타데이터 YAML이 포함된 Jekyll 게시물이 많이 있습니다 .categories
---
excerpt: "I am an excerpt"
categories:
- tips
- programming
- howto
- another-tag
layout: blog
title: I am a Page Title
created: 1267026549
permalink: blog/27-05-2017/clean-url-goes-here
---
categories
그래서 줄을 찾고 n
( ) 뒤에 줄을 표시하기 위해 grep하는 방법을 알고 있습니다 ... 하지만 분명히 각 게시물의 번호가 다르기 때문에 로 시작하는 -An
다음 줄을 모두 표시하도록 하는 방법이 있습니까 ? -
아마도 모든 라인은 layout
?
답변1
권장되는 텍스트 처리 도구는 입니다 awk
.
이 시도:
awk '/categories/,/layout/ { if (!/layout/) print }' your_file
이 명령은 줄 자체가 없을 categories
때까지 모든 것을 인쇄합니다.layout
산출:
categories:
- tips
- programming
- howto
- another-tag
categories
과 사이에만 항목을 갖고 싶다면 다음과 같이 layout
조건에 두 번째 패턴을 추가하면 됩니다 if
.
awk '/categories/,/layout/ { if (!/layout/ && !/categories/) print }' your_file
그러면 출력은 다음과 같습니다.
- tips
- programming
- howto
- another-tag
답변2
pcregrep
(Perl 호환 정규식)을 사용할 수 있는 경우 :
pcregrep -M 'categories.*(\n-.*)*' file
또는 예측 어설션을 사용하십시오.
pcregrep -M 'categories(.|\n)*(?=layout)' file
답변3
sed -e '/^categories:/,/^[^-]/!d;//d' yourfile
답변4
awk를 사용하여 이를 수행하는 한 가지 방법은 다음과 같습니다. 머리글 행을 찾으면 인쇄하고 다음 행이 로 시작하는 한 계속해서 다음 행을 가져와서 인쇄합니다 -
.
awk '$0=="categories:" { do { print; getline } while (/^-/) }'