파일의 다른 문자열 앞과 앞에 특정 문자열을 삽입합니다.

파일의 다른 문자열 앞과 앞에 특정 문자열을 삽입합니다.

그래서 Linux의 파일에 b.b00 ---전후 modules=를 삽입하려고 하는데 jumpstart.gz실제로 어떻게 해야 하는지 알 수 없는 것 같습니다. 나는 포럼에서 다른 답변을 보았지만 그 중 아무 것도 효과가 없었던 것 같습니다. 내 파일 이름은 boot.cfg이고 그 내용은 다음과 같습니다.

bootstate=0
timeout=5
kernelopt=runweasel
modules=jumstart.gz --- useropts.gz --- features.gz --- qeden.v00 ---tpm.v00
build=3.322.2
updated=0

내가 찾고 있는 것은 다음과 같습니다.

bootstate=0
timeout=5
kernelopt=runweasel
modules=b.b00 --- jumstart.gz --- useropts.gz --- features.gz --- qeden.v00 ---tpm.v00
build=3.322.2
updated=0

따라서 기본적으로 b.b00 ---after modules와 before를 추가합니다 jumpstart.gz.

내가 시도한 일부 명령은 다음과 같습니다.

sed -i '/\[modules=\]/a b.b00 ---' boot.cfg
sed -i '/^jumpstart.gz.*/i b.b00 ---' boot.cfg

이 명령 중 어느 것도 파일에 영향을 미치지 않는 것 같습니다. 누구든지 올바른 방향으로 나를 가리킬 수 있습니까? 당신의 도움에 매우 감사드립니다!

답변1

내가 아는 한, 실제로는 b.b00 ---뒤에 삽입 하기만 하면 됩니다 modules=. 그렇게 하면 이미 앞에 나타나는 것이 보장됩니다 jumstart.gz. 이제 거의 다 왔지만 어떤 이유로 [명령에 extra 및 를 추가했는데 해당 문자가 파일에 표시되지 않기 때문에 명령이 아무 작업도 수행하지 않습니다. 이 시도:]sed

sed 's/modules=/modules=b.b00 --- /' grub.cfg

예상대로 작동하는지 확인한 후 -i파일을 편집하려면 다음을 추가하세요.

sed -i 's/modules=/modules=b.b00 --- /' grub.cfg

일치하는 행에서만 이 작업을 수행하려는 경우modules= 그리고포함되어 있습니다 jumpstart.gz. 다음을 시도해 보세요.

sed '/jumstart.gz/s/modules=/modules=b.b00 --- /' grub.cfg

다시 말하지만, 파일을 편집하려면 다음을 사용하십시오 -i.

sed -i '/jumstart.gz/s/modules=/modules=b.b00 --- /' grub.cfg

답변2

이 문장을 사용하면 다음과 같이 작동합니다.

sed -i 's/modules=/modules=b.b00 --- /g' boot.cfg

모듈=로 대체됩니다모듈=b.b00 ---나머지도 동일하게 유지하세요

관련 정보