쉘 표준 출력을 파일의 첫 번째 줄로 리디렉션하는 방법은 무엇입니까?

쉘 표준 출력을 파일의 첫 번째 줄로 리디렉션하는 방법은 무엇입니까?

쉘 표준 출력은 파일의 마지막 줄로 리디렉션됩니다. 파일의 첫 번째 줄에 쓸 수 있는 방법이 있습니까?

stdout의 내용은 예측할 수 없기 때문에 stdout의 기본 동작을 변경해야 할 수도 있지만 그것이 가능한지는 확실하지 않습니다.

예, 타임스탬프를 파일로 리디렉션

echo `date` >> test.txt

기본적으로 파일의 마지막 줄에 저장

Mon Aug 31 00:40:27 UTC 2020
Mon Aug 31 00:40:28 UTC 2020
Mon Aug 31 00:40:29 UTC 2020
Mon Aug 31 00:40:30 UTC 2020

원하는 효과, 출력을 파일의 첫 번째 줄에 저장

Mon Aug 31 00:40:30 UTC 2020
Mon Aug 31 00:40:29 UTC 2020
Mon Aug 31 00:40:28 UTC 2020
Mon Aug 31 00:40:27 UTC 2020

미리 감사드립니다!

답변1

end 대신 시작 부분에 날짜를 쓰려면 file다음을 시도하십시오.

{ date; cat file; } >file.new && mv file.new file

논의하다

  1. 파일 시작 부분에 새 텍스트를 추가하려면 전체 파일을 다시 작성해야 합니다. 파일 끝에 새 텍스트를 추가하려면 새 텍스트를 작성하면 됩니다.

  2. 앤디 달튼제안 사항은 평소처럼 파일 끝에 추가한 다음 이를 사용하여 tac file파일을 보는 것입니다. 이는 좋은 제안입니다.

  3. echo `date` >> test.txt보다 간단하고 효율적인 방법으로 대체할 수 있습니다 date >> test.txt.

    bash 4.3 이상을 사용하는 경우 다음과 같이 하십시오.찰스 더피printf '%(%c)T\n' -1 >>test.txt더 효과적이라고 지적했습니다 .

  4. 교정기 주위의 공간은 매우 중요합니다. 이는 {및 둘 다 }껍질이기 때문입니다.예약어(쉘에 상대적핵심 단어공백이 필요하지 않습니다).

답변2

다음을 사용해 보세요 sed:

sed -i "1 i\
$(date)" test.txt

형태 man:

i \
text는 백슬래시가 앞에 오는 각 삽입된 줄 바꿈과 함께 텍스트를 삽입합니다.

답변3

행 순서를 반대로 바꿈

ex -s +%g/^/m0 +wq file

ex -svim -nes
+wqvim 편집기 모드, 저장 및 종료 명령
또는 bash 와 동일

tac <<<$(<file) >file

<<<$(<file)이것은 수제 완충제로 설계되었습니다.

첫 번째 줄을 쓰다

cat <<<$(date)$'\n'$(<file) >file
echo -e "$(date)\n$(<file)" >file

그리고

ex -s +'0r!date' +wq file

죄송합니다. 처음에는 잘 들리지 않았습니다.

답변4

주문하다

echo `date` > test.txt

test.txt 파일을 잘라서 기록하세요.

비록 주문은

echo `date` >> test.txt

끝에 추가된 파일에 쓰기

셸에서는 끝에 쓰지 않고(먼저 자르거나 추가하여) 쓸 수 있는 방법이 없습니다.

줄은 구분 기호가 있는 파일 묶음일 뿐입니다. 앞에 줄을 추가하려면 전체 파일을 다시 작성해야 합니다. 그러나 기존 바이트를 읽고 쓰고 덮어쓰기 위해 파일을 열 수 있습니다. 셸은 직접적인 인터페이스를 제공하지 않지만 dd다음 예를 사용하여 이 효과를 얻을 수 있습니다.

date | dd of=test.txt conv=notrunc

이것은바꾸다현재 날짜가 포함된 첫 번째 날짜입니다. 또한 고정 너비 형식으로 출력하기 위해 이를 활용하고 있으므로 * 첫 번째 레코드만 교체한다는 점에 유의하세요. 그렇지 않고 각 줄의 길이가 다른 경우 파일 시작 부분에 이전 줄의 부분 끝을 쓸 수 있습니다.

(*) 시간대가 변경되면 길이도 변경되므로 주의하시기 바랍니다. 특히 일광 절약 시간에서 일광 절약 시간으로 변경할 때 더욱 그렇습니다. date -R더욱 안정적인 형식이 될 것입니다.

관련 정보