변경해야 할 파일

변경해야 할 파일

CHANGELOG.md내가 원하는 파일이 있다고 가정 해 봅시다.끼워 넣다4행의 명령 출력입니다 generate-changelog. 다음과 같은 쉘 명령을 사용하여 이를 달성하려면 어떻게 해야 합니까 sed?

변경해야 할 파일

$ cat CHANGELOG.md
# Change Log
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](http://semver.org/).

# 3.0.0

내 주문

$ generate-changelog
# 3.0.1
- fixed some bug
- lots and lots 
- of multiline
- output

내가 얻고 싶은 결과 (stdout이 아니라 CHANGELOG.md직접적으로)

# Change Log
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](http://semver.org/).

# 3.0.1
- fixed some bug
- lots and lots 
- of multiline
- output

# 3.0.0

기본적으로 표준 입력을 기반으로 이 정적 명령을 생성해야 합니다.끼워 넣다4행의 명령으로 제공되는 임의 콘텐츠:

sed -i "4a\
    ## [$newTag](https://github.com/$(repo_path)/compare/$(latest_tag)...$newTag) - $(today)" CHANGELOG.md

답변1

최소한 GNU sed를 사용하면 r특수 파일 이름이 있는 명령을 사용하여 /dev/stdin표준 입력의 내용을 읽고 루프 끝에 삽입하기 위해 대기열에 넣을 수 있습니다( for 파일과 r약간 유사 ).a

따라서 generate-changelogstdout에 쓴다고 가정하면 시도해 볼 수 있습니다.

generate-changelog | sed -i '4r/dev/stdin' CHANGELOG.md

답변2

이렇게:

awk 'NR==4{system("generate-changelog")}1' file

이 작업이 제대로 작동하려면 IO 리디렉션이 포함된 임시 파일이 필요합니다.

관련 정보