[linux] 내부에서 파일을 정렬하는 방법

우리가 sort file명령 을 사용할 때 파일은 내용을 정렬 된 방식으로 보여줍니다.



답변

파일 리디렉션을 사용하여 정렬 된 출력을 리디렉션 할 수 있습니다.

sort input-file > output_file

또는 -o, --output=FILEsort 옵션을 사용 하여 동일한 입력 및 출력 파일을 표시 할 수 있습니다 .

sort -o file file

참고 : 일반적인 실수는 출력을 동일한 입력 파일 (예 :)로 리디렉션하는 것 sort file > file입니다. 쉘이 sort (1) 프로그램이 아닌 경로 재 지정을 수행 하고 있으며 출력 파일 인 입력 파일이 sort (1) 프로그램에 읽을 기회를 주기 직전에 지워지기 때문에 작동하지 않습니다.


답변

sort명령은 기본적으로 정렬 작업 결과를 표준 출력으로 인쇄합니다. “in-place”정렬을 달성하려면 다음을 수행하십시오.

sort -o file file

file정렬 된 출력으로 입력 을 덮어 씁니다 . -o출력을 지정하는 데 사용되는 스위치는, POSIX 의해 정의 그래서 모든 버전에서 이용 가능해야한다 sort:

-o 표준 출력 대신 사용할 출력 파일 이름을 지정하십시오. 이 파일은 입력 파일 중 하나와 동일 할 수 있습니다.

스위치 가 sort없는 버전을 보유 할 수있을 정도로 불행한 경우 -o( Luis 는 해당 버전이 존재 함을 보증 함) 표준 방식으로 “in-place”편집을 수행 할 수 있습니다.

sort file > tmp && mv tmp file


답변

sort file | sponge file

이것은 다음 Fedora 패키지에 있습니다 :

moreutils : Additional unix utilities
Repo        : fedora
Matched from:
Filename    : /usr/bin/sponge


답변

파일을 제자리에 정렬하려면 다음을 시도하십시오.

echo "$(sort your_file)" > your_file

다른 답변에서 설명한 것처럼 출력을 입력 파일로 직접 리디렉션 할 수 없습니다. 그러나 sort명령을 먼저 평가 한 다음 원래 파일로 다시 리디렉션 할 수 있습니다 . 이러한 방식으로 전체 정렬을 구현할 수 있습니다.

마찬가지로 paste행 단위 추가를 구현하는 것과 같은 다른 명령에도이 트릭을 적용 할 수 있습니다 .


답변

다음은 (ab) 사용하는 접근 방식입니다 vim.

vim -c :sort -c :wq -E -s "${filename}"

-c :sort -c :wq부분은 파일을 연 후 vim 명령을 호출합니다. -E그리고 -s는 “헤드리스”모드가 실행하는 VIM 어느 단말에 드로잉하지 않도록해야한다.

이것은 sort -o "${filename}" "${filename}"파일 이름 인수를 한 번만 취하는 것을 제외하고 는 접근 방식에 비해 거의 이점이 없습니다 .


이것은 파일 항목에 formatter지시문 을 구현하는 데 유용했습니다 . 여기에 내가 사용한 것이 있습니다.nanorc.gitignore

syntax "gitignore" "\.gitignore$"

formatter vim -c :sort -c :wq -E -s


답변

폴더와 하위 폴더의 모든 파일을 재정의 하시겠습니까?

이것을 사용하십시오 :

find . -type f -exec sort {} -o {} \;


답변