표준 입력을 sed로 바꾸는 방법

표준 입력을 sed로 바꾸는 방법

다른 디렉토리에 있는 파일의 비밀번호 필드를 바꿔야 합니다(검색 및 바꾸기). 모든 필드의 형식은 다음과 같습니다.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교체를 위해 임시 파일을 통해 루프 에 전달합니다 . sedsed에 있는 경우 다음 -i과 같이 단순화할 수 있습니다.

grep -l fieldofinterest /etc/filemod*/* | while read filename; do
  sed -i 's/fieldofinterest.*/fieldofinterest = myvalue/' "$filename" 
done

관련 정보