[linux] 파일의 시작 부분에 텍스트를 삽입하는 방법?

지금까지 파일의 시작 부분에 줄을 추가하는 방법을 찾을 수 있었지만 정확히 내가 원하는 것은 아닙니다. 예제로 보여 드리겠습니다

파일 내용

some text at the beginning

결과

<added text> some text at the beginning

비슷하지만 새로운 줄을 만들고 싶지 않습니다 …

sed가능한 경우이 작업을 수행하고 싶습니다 .



답변

sed 주소에서 작동 할 수 있습니다 :

$ sed -i '1s/^/<added text> /' file

1s여기 모든 대답 에서이 마법이 무엇입니까 ? 라인 어드레싱! .

<added text>처음 10 줄 을 추가 하고 싶 습니까?

$ sed -i '1,10s/^/<added text> /' file

또는 다음을 사용할 수 있습니다 Command Grouping.

$ { echo -n '<added text> '; cat file; } >file.new
$ mv file{.new,}


답변

파일 시작 부분에 줄을 추가 \n하려면 위의 최상의 솔루션에서 문자열 끝에 줄 을 추가해야합니다 .

가장 좋은 해결책은 문자열을 추가하지만 문자열을 사용하면 파일 끝에 줄을 추가하지 않습니다.

sed -i '1s/^/your text\n/' file


답변

파일이 한 줄이면 다음을 사용할 수 있습니다.

sed 's/^/insert this /' oldfile > newfile

한 줄 이상인 경우. 다음 중 하나 :

sed '1s/^/insert this /' oldfile > newfile
sed '1,1s/^/insert this /' oldfile > newfile

다양한 라인을 수행하는 방법을 알 수 있도록 후자를 포함 시켰습니다. 이 두 가지 모두 영향을받는 줄의 시작 줄 표식을 삽입하려는 텍스트로 “대체”합니다. 당신은 또한 (당신 sed이 충분히 현대적 이라고 가정 ) 사용할 수 있습니다 :

sed -i 'whatever command you choose' filename

바로 편집 할 수 있습니다.


답변

당신이 사용할 수있는 cat -

printf '%s' "some text at the beginning" | cat - filename


답변

개행 만 삽입하려면 다음을 수행하십시오.

sed '1i\\'


답변

서브 쉘 사용 :

echo "$(echo -n 'hello'; cat filename)" > filename


답변

OS X에서는 sed -i <pattern> file에 실패합니다. 백업 확장을 제공하는 경우, sed -i old <pattern> file다음 file동안 장소에서 수정 file.old작성됩니다. 그런 다음 file.old스크립트에서 삭제할 수 있습니다 .