그래서 다음과 같이 _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
-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 (/^-/) }'