다른 줄에 있는 파일을 병합하는 가장 빠른 명령줄 방법은 무엇입니까? 예를 들어 다음과 같은 두 개의 파일이 있습니다.
a.txt:
foo
bar
foobar
b.txt
foo
foobar
line
by
bar
다음 출력을 얻고 싶습니다.
foo
bar
foobar
line
by
위의 예와 같이 파일을 병합하는 빠른 방법이 있습니까? (줄의 순서는 중요하지 않습니다)
답변1
$ sort -u a.txt b.txt
bar
by
foo
foobar
line
이렇게 하면 두 파일의 (결합된) 내용이 정렬되어 중복된 줄이 제거됩니다. 단점은 한 줄이 파일에 중복되면 해당 줄도 삭제된다는 것입니다.
결과를 쓰려면 c.txt
다음을 사용하세요.
sort -u -o c.txt a.txt b.txt
또는 표준 리디렉션
sort -u a.txt b.txt >c.txt
답변2
awk seen
파일을 정렬하지 않으려면 다음을 사용하십시오.
$ awk '!seen[$0]++' a.txt b.txt
foo
bar
foobar
line
by
답변3
원하는 출력에 따르면 두 파일을 고유한 문자열로 병합하기만 하면 된다고 생각합니다.
이 경우 , cat
및 이 작업을 수행할 수 있습니다 sort
.uniq
cat a.txt b.txt | sort | uniq > c.txt
cat
두 파일의 내용을 엽니다.
sort
출력을 알파벳순으로 정렬
uniq
고유한 문자열만 나열
> c.txt
모든 출력을 새 파일에 넣습니다.c.txt