파일의 내용은 다음과 같습니다.
Text1:
text_1: Text1 text_1
text_2:
- text
- file1:\\
- file2:\\
Text2:
text_1: Text2 text_1
text_2:
- text
- file3:\\
Text3:
etc
출력: 주어진 Textn에 대한 "file:\" 항목을 인쇄합니다. 이를 달성하기 위해 Linux에서 sed/awk 명령을 사용하는 방법을 알아 두십시오.
예: test.txt 파일의 내용은 다음과 같습니다.
$ cat test.txt
Text1:
text_1: Text1 text_1
text_2:
- text
- file1:\\
- file2:\\
Text2:
text_1: Text2 text1
text_2:
- text
- file3:\\
Text3:
etc
제안된 대로 아래 grep 명령을 사용해 보십시오. 그러면 test.txt 파일의 모든 "file:\" 항목이 인쇄됩니다. "Text1:" 일치의 경우 출력으로 file1:\ 및 file2:\만 필요하고 "Text2:"의 경우 file3:\만 일치합니다.
답변1
yq
새로 업데이트된 YAML 파일에 사용하려면 다음 file
과 같은 값을 선택할 수 있습니다.
yq '.Text1.text_2[] | select(. == "file*")' file.yaml
산출
file1:\\
file2:\\
다른 값을 선택하고 싶다면 TextN
적절한 키 값을 전달하여 다음과 같이 할 수 있습니다.
for key in Text1 Text2
do
printf 'Key %s:\n' "$key"
yqText="$key" yq 'eval("." + env(yqText) + ".text_2[]") | select(. == "file*")' file.yaml |
while IFS= read -r val
do
printf 'Value: %s\n' "$val"
done
echo
done
아직 설치 하지 않았다면 yq
Github 저장소에서 직접 설치할 수 있습니다.https://github.com/mikefarah/yq, 또는 호스팅 환경인 경우 변경 게시판에 문의하세요.