파일의 특정 줄에서 한 단어를 변경하려고하는데 모두 함께 연결하는 데 문제가 있습니다.
기본적으로 내 파일의 한 줄에는 키워드 'firmware_revision'이 있으며이 줄 (이 줄에만)에는 'test'라는 단어를 'production'이라는 단어로 바꾸고 싶습니다.
그래서 나는 이것을 할 수 있습니다 :
grep 'firmware_revision' myfile.py | sed 's/test/production'
원하는 줄을 선택하고 대체를 수행하지만 이전 줄을 대체하기 위해이 새 줄을 원본 파일로 가져 오는 방법을 알 수 없습니다. 분명히 파일로 다시 리디렉션 할 수 없으므로 어떻게해야합니까?
임시를 사용하더라도 grep
줄을 가져 오기 위해 파일을 사용하면 파일의 다른 모든 데이터가 손실되므로 더 이상 모든 파일을 임시 파일로 리디렉션 할 수 없으며 원본을 임시로 바꿀 수 없습니다.
편집-누군가 더 많은 정보를 요청했습니다
이 줄로 가득 찬 파일이 있다고 가정 해 봅시다.
[
('key_name1', str, 'value1', 'Description'),
('key_name2', str, 'value2', 'Description'),
('key_name3', str, 'value3', 'Description'),
('firmware_revision', str, 'my-firmware-name-test', 'Firmware revision name')
]
이제 'firmware_revision'이 포함 된 줄을 찾고 해당 줄에서 'test'라는 단어의 모든 인스턴스를 'production'으로 변경하는 스크립트 (이상적으로는 한 줄짜리)를 작성하고 싶습니다. 'test'라는 단어가 해당 파일의 다른 위치에있을 수 있으며 변경하지 않기를 바랍니다. 분명히하기 위해 위의 줄을
('firmware_revision', str, 'my-firmware-name-production', 'Firmware revision name')
어떻게해야합니까?
sed -i.bak '/firmware_revision/ s/test/production/' myfile.py
sed
매우 강력하고 기능grep
과 대체 기능을 모두 수행 할 수 있지만 라인이 어떻게 도움이되는지에 대한 자세한 정보가 필요합니다.