sort
나는 텍스트 파일에서 중복된 줄을 제거하고, 알파벳순으로 정렬하곤 했습니다 .파일 덮어쓰기( {,}
명령에서):
sort -u -o $HOME/Documents/notes/URLs.txt{,}
나중에 믹스에 다른 파일을 추가하려면 어떻게 해야 합니까 URLs.txt
? 설명하기 위해 또 다른 세 가지를 사용해보자:
$HOME/Documents/notes/{URLs.txt,Android.txt,mpv.txt,firefox.txt}
답변1
sort
모든 입력을 정렬합니다. 따라서 에 여러 파일 매개변수를 제공할 때마다 sort
해당 매개변수의 연결을 정렬합니다. 파일을 개별적으로 정렬하고 각 파일을 출력으로 다시 작성하려면 별도의 명령을 호출해야 합니다.
for f in URLs.txt Android.txt mpv.txt firefox.txt
do
sort -u -o "$HOME/Documents/notes/$f"{,}
done
이:
sort -u -o newfile "$HOME"/Documents/notes/*.txt
모든 입력 파일의 연결을 새 파일로 정렬합니다.
답변2
에서는 zsh
다음을 수행합니다.
for f (~/Documents/notes/(URLs|Android|mpv|firefox).txt(N)) sort -uo $f $f
(또는 sort -uo $f{,}
골프를 치고 싶다면).
이에 상응하는 내용은 bash
다음과 같습니다.
(shopt -s extglob nullglob
for f in ~/Documents/notes/@(URLs|Android|mpv|firefox).txt; do
sort -uo "$f" "$f"
done
)
중괄호 확장 대신 와일드카드를 사용하여 실제로 존재하는 경우 URLs.txt
에만 처리합니다.firefox.txt
를 사용하면 이러한 파일이 다음 조건을 충족하는 경우에만 처리되도록 glob 한정자를 zsh
추가할 수도 있습니다 ..
정기적인문서. 를 사용하면 루프를 추가하여 비정규 파일을 건너뛸 bash
수 있습니다 .[[ -f $f && ! -L $f ]] || continue