텍스트 파일 끝에 출력을 추가하는 방법


478

텍스트 파일 끝에 명령 출력을 어떻게 추가합니까?

답변:


665

출력을 파일 >>>보낼 때 대신 사용하십시오 .

your_command >> file_to_append_to

경우 file_to_append_to존재하지 않는, 그것은 생성됩니다.

예:

$ echo "hello" > file
$ echo "world" >> file
$ cat file 
hello
world

4
문제는 echo문자열에서 줄 바꿈 을 제거 한다는 것 입니다. 줄 바꿈이 포함 된 문자열을 파일에 어떻게 추가합니까?
Timothy Swan

5
@TimothySwan, 나는 -e 옵션을 믿습니다.
Valentin Grégoire

echo는 문자열에서 줄 바꾸기를 제거하지 않습니다. 인수를 올바르게 인용하지 못하면 쉘은 문자열을 분할하고 인수를 에코 및 에코로 전달하여 줄 바꿈조차 보지 않습니다.
윌리엄 퍼셀

106

append파일 사용 >>

echo "hello world"  >> read.txt   
cat read.txt     
echo "hello siva" >> read.txt   
cat read.txt

출력은

hello world   # from 1st echo command
hello world   # from 2nd echo command
hello siva

overwrite파일 사용 >

echo "hello tom" > read.txt
cat read.txt  

그런 다음 출력은

hello tom


74

>> 연산자를 사용할 수 있습니다. 이것은 명령에서 텍스트 파일의 끝에 데이터를 추가합니다.

이것을 테스트하려면 다음을 실행하십시오.

echo "Hi this is a test" >> textfile.txt

이 작업을 몇 번 수행 한 후 다음을 실행하십시오.

cat textfile.txt

textfile.txt 파일에 텍스트가 여러 번 추가 된 것을 볼 수 있습니다.


40

사용이 command >> file_to_append_to파일에 추가합니다.

예를 들어 echo "Hello" >> testFile.txt

주의 : 하나만 사용 >하면 파일의 내용을 덮어 씁니다. 지금까지 발생하지 않도록하기 위해, 당신은 추가 할 수 있습니다 set -o noclobber당신에게 .bashrc.

이를 통해 실수로 command > file_to_append_to기존 파일을 입력 하면 파일이 이미 존재한다는 경고를 표시합니다. 샘플 오류 메시지 :file exists: testFile.txt

따라서 사용 >하면 기존 파일을 덮어 쓰지 않고 새 파일 만 만들 수 있습니다.



21

-a (-append) 옵션과 함께 tee 를 사용하면 한 번에 여러 파일을 추가하고 sudo 를 사용할 수 있습니다 (보호 된 파일에 추가 할 때 매우 유용함). 게다가 모든 쉘이> 및 >> 연산자를 지원하지는 않으므로 bash 이외의 다른 쉘을 사용해야하는 경우 흥미 롭습니다.

echo "hello world" | sudo tee -a output.txt

스레드 는 티에 대한 좋은 답변 이 있습니다


2
이것은 새로운 줄로 무언가를 추가하는 가장 좋은 방법입니다.
M_R_K

2
보호 된 파일에 추가 할 수있는 방법을 찾고 있었고이를 해결했습니다
Woootiness

14

전체 질문에 대해 :

cmd >> o.txt && [[ $(wc -l <o.txt) -eq 720 ]] && mv o.txt $(date +%F).o.txt

그러면 o.txt에 720 줄 (30 * 24)이 추가되고 이후에는 현재 날짜를 기준으로 파일 이름이 바뀝니다.

매시간마다 cron으로 위를 실행하십시오. 또는

while :
do
    cmd >> o.txt && [[ $(wc -l <o.txt) -eq 720 ]] && mv o.txt $(date +%F).o.txt
    sleep 3600
done

11

더 안정적 이며 개행과 같은 형식을 \n올바르게 처리 하기 때문에 echo 대신 printf를 사용 합니다.

이 예제는 이전 예제에서 echo와 유사한 출력을 생성합니다.

printf "hello world"  >> read.txt   
cat read.txt
hello world

그러나이 예제에서 printf를 echo로 바꾸면 echo는 \ n을 문자열로 취급하므로 의도를 무시합니다.

printf "hello\nworld"  >> read.txt   
cat read.txt
hello
world

7

두 가지 일을 제안합니다.

  1. >>쉘 스크립트에서 사용 하여 특정 파일에 내용을 추가하십시오. 파일 이름은 고정되거나 일부 패턴을 사용할 수 있습니다.
  2. 쉘 스크립트를 트리거하기 위해 매시간 cronjob 설정

7

예를 들어 파일에 다음이 포함되어 있습니다.

 1.  mangesh@001:~$ cat output.txt
    1
    2
    EOF

파일 끝에 추가하고 싶다면 ----> 'text'>> 'filename'사이의 공백을 기억하십시오.

  2. mangesh@001:~$ echo somthing to append >> output.txt|cat output.txt 
    1
    2
    EOF
    somthing to append

그리고 파일의 내용을 덮어 쓰려면 :

  3.  mangesh@001:~$ echo 'somthing new to write' > output.tx|cat output.tx
    somthing new to write

1
이것은 많은 세부 사항에서 오해의 소지가 있습니다. 공백은 중요 하지 않으며 빈 출력을 배관하는 cat것은 ... 완벽합니다. 표준 출력을 파일로 리디렉션했기 때문에 비어 있습니다.
tripleee
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.