Bash 스크립트를 사용하여 파일을 편집하는 가장 좋은 방법은 무엇입니까?

Bash 스크립트를 사용하여 파일을 편집하는 가장 좋은 방법은 무엇입니까?

RHEL 5.8에서 /bin/bash를 사용하여 파일을 자동으로 편집하고 싶습니다. 파일을 검색하고 파일의 한 줄을 바꾸려면 스크립트가 필요합니다. 라인 예:

Other line
Current date 01121990
Other line

이 줄을 검색하고 날짜 문자열을 예약된 날짜로 바꿉니다. 파일이 서버별 파일에서 복사되기 때문에 새 파일에 에코를 표시하거나 날짜를 입력할 수 없습니다. 감사해요!

답변1

your_date='your desired date'
sed -i "s/^Current date.*/Current date ${your_date}/" /path/to/file

이것이 가장 간단한 방법입니다. 이는 교체될 날짜를 포함하는 모든 행이 "현재 날짜"로 시작하는 유일한 행이기도 한다고 가정합니다.

이 명령을 실행하는 사용자 수준에는 파일을 편집할 수 있는 권한도 있어야 합니다.

-i는 인라인 편집을 의미합니다. 즉, 파일을 직접 편집한다는 의미입니다.

^Current date.*

다음으로 시작하는 모든 줄을 의미합니다.현재 날짜 그리고 어떻게든 끝내세요. 즉, 전체 줄을 sed의 두 번째 /.../ 섹션 내용으로 바꾸세요.

sed 문 주위에 Double "을 사용하여 변수가 문자열이 아닌 변수로 사용되도록 합니다.

답변2

ed할수있다파일 편집이 진행 중입니다.게다가! 편집된 파일의 inode 번호는 변경되지 않습니다.

file='/path/to/file'
your_date='your desired date'
ls -i "$file"
printf '%s\n' H ",g/^Current date.*/s//${your_date}/" wq | ed -s "$file"
ls -i "$file"

관련 정보