![표준 입력을 sed로 바꾸는 방법](https://linux55.com/image/77374/%ED%91%9C%EC%A4%80%20%EC%9E%85%EB%A0%A5%EC%9D%84%20sed%EB%A1%9C%20%EB%B0%94%EA%BE%B8%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
다른 디렉토리에 있는 파일의 비밀번호 필드를 바꿔야 합니다(검색 및 바꾸기). 모든 필드의 형식은 다음과 같습니다.field = value
내가 시도한 것은 다음과 같습니다.
grep -i fieldofinterest /etc/filemod*/*| sed 's/[=].*$/ = myvalue/'
이것은 작동하는 것 같지만 작성하려고 하면 입력 파일이 제공되지 않았다는 오류가 발생합니다.
이 교체 작업을 수행하려면 어떻게 해야 합니까?
답변1
즉흥적으로:
grep -l fieldofinterest /etc/filemod*/* | while read filename; do
sed 's/fieldofinterest.*/fieldofinterest = myvalue/' "$filename" > tmp && mv tmp "$filename"
done
grep -l
다음을 포함하는 파일 이름을 수집합니다 .관심 분야while
교체를 위해 임시 파일을 통해 루프 에 전달합니다 . sed
sed에 있는 경우 다음 -i
과 같이 단순화할 수 있습니다.
grep -l fieldofinterest /etc/filemod*/* | while read filename; do
sed -i 's/fieldofinterest.*/fieldofinterest = myvalue/' "$filename"
done