다른 줄로 파일을 병합하는 방법은 무엇입니까?

다른 줄로 파일을 병합하는 방법은 무엇입니까?

다른 줄에 있는 파일을 병합하는 가장 빠른 명령줄 방법은 무엇입니까? 예를 들어 다음과 같은 두 개의 파일이 있습니다.

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

관련 정보