디렉토리의 모든 파일에서 문자열 foo의 모든 항목을 bar로 변경하려면 다음을 사용합니다.
sed -i -- 's/foo/bar/g' *
발견하다여기
하지만 NAME을 이름 등으로 변경하고 싶습니다. 예전에 시도해 본 적이 있는데,
sed -i -- 's/foo/bar/g' * sed -i -- 's/NAME/이름/g' *
그러면 새 파일이 생성됩니다. 새 파일을 만들지 않고 이 명령이 원본 파일을 다시 작성하고 foo를 bar로 바꾸고 NAME을 이름으로 바꾼 다음 다른 대체 파일을 갖도록 하려면 어떻게 해야 합니까?
답변1
sed
단일 호출로 여러 표현식을 제공할 수 있습니다.
sed -e 'expr' -e 'expr' -e ...
귀하의 경우:
sed -e 's/foo/bar/g' -e 's/NAME/name/g'
표현식은 입력의 각 줄에 왼쪽에서 오른쪽으로 순차적으로 적용됩니다.