Bash 스크립트를 사용하여 텍스트 파일 일괄 접기

Bash 스크립트를 사용하여 텍스트 파일 일괄 접기

나는 아주 간단한 일을 하는 데 어려움을 겪고 있습니다. 한 줄의 숫자로 구성된 약 2000개의 .txt 파일이 있습니다. 나는 접기 명령을 사용하여 한 줄을 여러 행이 있는 하나의 열로 접고 이 새로운 접힌 버전으로 원본 파일을 덮어쓰고 싶습니다. 내 시도:

#!/bin/bash
for i in *.txt ; do
  fold -w 1 $file > $file
done

작동하지 않습니다. 돕다? 감사해요.

답변1

여기에는 두 가지 문제가 있습니다. 먼저 변수 "i"를 선언했지만 존재하지 않는 "$file"을 사용하고 있습니다. 그랬다고 하더라도 두 번째 문제는 bash가 "왼쪽에서 오른쪽으로" 읽는다는 것입니다. 이는 먼저 ">$file"을 보고 파일 내용을 덮어쓴다는 의미입니다. 따라서 올바른 변수를 사용했다면 데이터가 손실되었을 것입니다.

그래서 한 가지 오류로 인해 다른 오류가 발생하지 않게 되었습니다. 운이 좋은 친구입니다 :)

다음과 같이 시도해 보세요:

for i in *.txt ; do fold -w 1 $i > sillytmpfile; mv sillytmpfile $i; done

답변2

sed옵션일 수도 있으며 임시 파일 문제를 내부적으로 처리합니다.

for i in *.txt ; do
  sed  -i 's#.#&\n#g' $file
done

관련 정보