:/etc/simmmerin/bin/
echo 명령을 사용하여 파일의 filename
기존 줄 에 문자열을 추가하는 방법 . 작동시킬 수 없습니다.
echo ":/etc/simmerin/bin/" >> filename
내가 원하는 줄을 계속하는 대신 파일 맨 아래에 추가됩니다. 나는 echo
각 파일이나 그와 유사한 것을 사용하는 대신 사용하고 싶습니다 vim
.
답변1
파일 끝에는 이미 줄 바꿈 문자가 있어 마지막 줄을 종료합니다. 추가 내용은 다른 줄에 표시됩니다. 마지막 개행 문자를 덮어써야 하는데 >>
리디렉션만으로는 그렇게 할 수 없습니다. 아마도 사용하기 가장 쉬운 방법은 다음과 같습니다 sed
.
$ seq 1 4 | sed -e '$s,$,stuff/to/append,'
1
2
3
4stuff/to/append
sed
파일을 제자리에서 수정 하려면 다음을 사용하세요.
sed -i -e '$s,$,stuff/to/append,' filename
(달러 기호에는 두 가지 의미가 있습니다. 첫 번째 $
는 다음 명령이 실행되는 줄을 제어하는 주소입니다. 여기서는 마지막 줄입니다. 두 번째는 $
줄 끝을 나타내는 정규식 표현입니다.)
마지막 줄이 아닌 줄에 추가하려면 첫 번째 줄을 $
줄 번호나 패턴 일치로 바꾸세요. 그러면 다음을 포함하는 모든 줄에 문자열이 추가됩니다 foo
.
sed -i -e '/foo/ s,$,stuff/to/append,' filename
여기서는 s
명령 구분 기호 로 쉼표를 사용하고 있습니다. 슬래시가 더 일반적이지만 추가되는 텍스트에는 슬래시가 포함되어 있습니다. 이 s
명령을 사용하면 (거의) 모든 문자를 사용할 수 있습니다.
올바른 줄을 찾는 데 사용되는 패턴에 슬래시가 있으면 유사한 \,foo,
주소를 사용할 수 있습니다. 즉, 백슬래시로 시작하고 편리한 구분 기호를 사용할 수 있습니다.
답변2
기존 파일을 수정하려면 sed
명령을 사용할 수 있습니다.
추가할 문자열과 이를 삽입하려는 줄 번호가 있다고 가정합니다.
mystring=":/etc/simmerin/bin/"
lineno=10
문자열 삽입시작선:
sed "${lineno}s,^,${mystring}," file
문자열 삽입끝선:
sed "${lineno}s,\$,${mystring}," file
문자열 삽입앞으로은행:
sed "${lineno}s,^,${mystring}\n," file
문자열 삽입뒤쪽에은행:
sed "${lineno}s,\$,\n${mystring}," file
답변3
newline
이미 파일 끝에 있습니다. 줄 바꿈 크기는 1바이트입니다. 이 truncate
명령을 사용하면 파일을 1바이트만큼 축소한 다음 파일 끝에 추가할 수 있습니다.
truncate -s -1 filename && echo ":/etc/simmerin/bin/" >> filename
답변4
echo 대신 printf를 사용하면 기본적으로 "\n"이 추가되지 않습니다.
printf는 bash 명령이므로 쉘이 이를 지원하는지 확인하십시오.