부팅 시 rc.local파일에 문자를 삽입하는 일이 생겼다.

echo를 이용하여 삽입하였지만 exit 0 즉 맨 마지막 줄에 명령어가 삽입이 되어 실행이 되지 않았다.


찾던 도중 awk와 sed를 이용하여 특정라인에 추가를 하였지만 이는 추가한 내용을 출력한 것이지 갱신이 되는 것은 아니었다.


ex) awk ' {if (NR == <22:특정 열>) { print "명령어 해당 부분" ; print $0 } else { print $0 } }' <InputFile>

ex) sed -e '<22:특정 열> i\ <명령어>' <InputFile>


그러나 awk나 sed는 찾기, 출력, 치환 등 많이 사용되기 때문에 스크립트를 펄의 능력과 거의 비슷한 수준으로 끌어올릴 수 있음.


위의 방법은 InputFile에 문자열들을 읽고 22라인, 즉 설정한 특정 열에 내가 넣고 싶은 명령어를 넣고 출력하는 것 밖에 하지 못했다. 물론 >> 를 통해 덧붙이는 방법이나, > 덮어쓰기를 할 순 있었으나 별도의 파일을 만들거나, 또는 밑에 내용들이 계속 덧붙이는 더러운 파일이 생성되었다.


결론.

특정라인에 곧바로 추가하기

perl -p -i -e '$.==<22:특정열> and print "<명령어>"' <InputFile>

반응형

+ Recent posts