일부 소프트웨어를 가져와 빌드하기 위해 쉘 스크립트(bash)를 작성 중입니다. 또한 스크립트는 여러 개의 작은 구성 파일을 작성하며 여러 기존 구성 파일을 변경해야 합니다. Bash 스크립트에서 여러 줄의 텍스트 파일을 찾아 바꾸는 가장 좋은 방법은 무엇입니까?
작동할 것 같지만 sed
구문을 이해하지 못합니다...
답변1
awk/sed/bash/Python/Perl/Ruby 및 대부분의 기타 도구/프로그래밍 언어는 파일에서 작동할 수 있습니다. "가장 좋은" 방법은 자신에게 익숙하고 편안한 방법입니다. sed에 대해 아무것도 모른다면, 검색해서 배워보세요. 그렇지 않고, 알고 있는 프로그래밍 언어가 있다면 그것을 사용하세요. 다음은 bash 스크립트 예입니다.
exec 6<"file"
while read -r line <&6
do
case "$line" in
*pattern* )
line="${line//word/replace}"
esac
echo "$line"
done > "out"
exec 6<&-
mv out file
sed 예
sed 's/word/replace/g' file
이상한 예
awk '{gsub(/word/,"replace")}1' file > t && mv t file
Python 예제(이후 버전에서는 "with" 사용)
for line in open("file"):
if "pattern" in line:
line=line.replace("pattern","replace")
print line
답변2
답변3
sed s/@var@/$VALUE/g <config.in >config
/
, 하지만 -- 에 슬래시가 있는지 주의하세요. $VALUE
슬래시를 이스케이프 처리하거나 다른 구분 기호를 사용해야 할 수도 있습니다.