it-swarm-ko.tech

파일에 여러 줄을 추가하는 방법

파일이 존재하지 않으면 파일을 찾아 bash 스크립트를 작성하여 파일에 추가하십시오.

Host localhost
    ForwardAgent yes

그래서 "line then new line 'tab' then text" 민감한 형식이라고 생각합니다. 나는 당신이 이것을 할 수 있다는 것을 알고 있습니다 :

cat temp.txt >> data.txt

그러나 두 줄 이후로 이상하게 보입니다. 이 형식으로 추가하는 방법이 있습니까?

echo "hello" >> greetings.txt
346
TheLegend
# possibility 1:
echo "line 1" >> greetings.txt
echo "line 2" >> greetings.txt

# possibility 2:
echo "line 1
line 2" >> greetings.txt

# possibility 3:
cat <<EOT >> greetings.txt
line 1
line 2
EOT

파일에 쓰기 위해 Sudo (다른 사용자 권한)가 필요한 경우 다음을 사용하십시오.

# possibility 1:
echo "line 1" | Sudo tee -a greetings.txt > /dev/null

# possibility 3:
Sudo tee -a greetings.txt > /dev/null <<EOT
line 1
line 2
EOT
604
Hauke Laging
printf '%s\n    %s\n' 'Host localhost' 'ForwardAgent yes' >> file.txt

또는 질문에 네 개의 공백이 아닌 문자 그대로의 탭인 경우 :

printf '%s\n\t%s\n' 'Host localhost' 'ForwardAgent yes' >> file.txt

echo와 동일한 효과를 얻을 수 있지만 구현마다 구현 방법이 정확히 다른 반면 printf는 일정합니다.

64
evilsoup
echo -e "Hello \nWorld \n" >> greetings.txt
42
kendotwill

또 다른 방법은 tee

tee -a ~/.ssh/config << END
Host localhost
  ForwardAgent yes
END

tee의 매뉴얼 페이지에서 몇 가지 선택 사항 :

티 유틸리티는 표준 입력을 표준 출력으로 복사하여 0 개 이상의 파일로 복사합니다.

-a-파일을 덮어 쓰지 않고 출력을 파일에 추가합니다.

22
user206934

SED는 다음과 같이 파일 끝에 줄을 추가 할 수 있습니다.

sed -i '$ a text to be inserted' fileName.file
$는 파일의 끝을 선택하고 a는 추가하도록 지시 한 후 삽입 할 텍스트를 제공합니다. 물론 파일 이름입니다.


출처 : http://www.yourownlinux.com/2015/04/sed-command-in-linux-append-and-insert-lines-to-file.html

========== EDIT =============

이 방법은 다른 솔루션보다 추가 이점이 있습니까?
예,이 접근 방식은 다음과 같이 검색시 반환되는 파일에 추가 할 수있는 이점이 있습니다. find . -name "*.html" -exec sed -i '$ a </html>' {} \;

위 예제를 사용하여 여러 디렉토리 내의 모든 html 페이지에서 누락 된 html 태그를 삽입했습니다.

====================================

6
OB7DEV

다음은 파일에 여러 줄을 추가하는 예입니다.

{
        echo '  directory "/var/cache/bind";'
        echo '  listen-on { 127.0.0.1; };'
        echo '  listen-on-v6 { none; };'
        echo '  version "";'
        echo '  auth-nxdomain no;'
        echo '  forward only;'  
        echo '  forwarders { 8.8.8.8; 8.8.4.4; };'
        echo '  dnssec-enable no;'
        echo '  dnssec-validation no;'
} >> your_file.txt
3
user2753331

Sudo와 함께 사용할 수 있기 때문에 sed를 사용했습니다. 예를 들면 다음과 같습니다.

Sudo sed -i '$ a text to be inserted' fileName.file 

대안은 매우 추악합니다.

Sudo bash -c "echo a text to be inserted >> fileName.file"  

ssh로 끝났을 때 더 추악합니다.

1
Fred Mehrdad

Perl 또는 Python)을 사용하여 cat >> out.txt를 에뮬레이션 할 수 있습니다.

Perl -e 'open(fh,">>","./out.txt");while(<>){printf(fh "%s",$_)};close(fh);'

그리고 파이썬 :

python -c 'import sys;f=open(sys.argv[1],"a");l=[i for i in sys.stdin];f.write("".join(l))' out.txt 

python의 경우 Ctrl+D 두번. 자세한 내용은 stackoverflow 관련 질문 을 참조하십시오.

1

또 다른 라이너는 다음과 같습니다.

echo "Greetings 1" >> greetings.txt && echo "Greetings 2" >> greetings.txt

나는 -e 옵션은 더 많은 제어를 제공하므로 생각했습니다.

echo -e "Greeting 1\nGreetings 2\n" >> greetings.txt
1
Erdal G.

주요 답변 외에도 파일에 슈퍼 사용자 권한이 필요한 경우 Sudo 앞에 echo을 추가하면 작동하지 않습니다.

셸이 명령을 중단하고 echo가 루트로 실행되었지만 >>는 일반 권한으로 실행되었습니다.

이것은 수퍼 유저에게 적용됩니다 : Sudo su -c "echo 'Line 3' >> greetings.txt"

0
SJ00