![텍스트 파일에서 고유 값을 정렬하는 방법은 무엇입니까? [복사]](https://linux55.com/image/192621/%ED%85%8D%EC%8A%A4%ED%8A%B8%20%ED%8C%8C%EC%9D%BC%EC%97%90%EC%84%9C%20%EA%B3%A0%EC%9C%A0%20%EA%B0%92%EC%9D%84%20%EC%A0%95%EB%A0%AC%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
다음과 같은 텍스트 파일이 있습니다.
A f1
B f2
A f3
B f4
B f5
첫 번째 열 값을 기준으로 정렬하여 별도의 파일에 저장하고 싶습니다.
원하는 출력:
A.txt:
A f1
A f3
B.txt:
B f2
B f4
B f5
시도했지만 uniq
작동하지 않습니다. 편집: txt 파일과 출력 파일을 원하는 방식으로 게시할 수 없지만 다음 줄에 있어야 합니다.
답변1
대부분의 경우 간단히 다음을 수행할 수 있습니다.
awk '{print > $1 ".txt"}' file
답변2
필요한 것은 uniq가 아니라 awk뿐입니다.
awk ' $1 == "A" { print }' $file > something.txt` #This will print all A's
awk ' $1 == "B" { print }' $file > something.txt` #This will print all B's.
참고: $file
입력 로그의 이름이 됩니다.
편집: 내 원래 답변은 제공된 데이터를 기반으로 했습니다. 지금 업데이트했습니다. 따라서 내 원래 "필요한 것은 grep뿐입니다."는 더 이상 작동하지 않고 "awk"로 변경되었습니다.
답변3
짧은 awk 스크립트가 작업을 수행합니다.
sort file | awk '
$1 != prev {prev = $1; if (out) close(out); out = $1 ".txt"}
{print > out}
'
close()
"열린 파일이 너무 많습니다" 오류를 방지하기 위해 추가되었습니다 .