일부 줄이 동일한 두 개의 파일이 있습니다.
파일 A:
command 1{
some code lines
}
command 2
command 3
command 4{
some code lines
}
파일 B:
command 5
command 3
command 1{
some code lines
}
나는 다음을 포함하는 최종 파일을 원합니다:
command 1{
some code lines
}
command 2
command 3
command 4{
some code lines
}
command 5
줄의 순서는 중요하지 않습니다. 이 작업을 수행할 수 있는 기존 도구(또는 명령)가 있습니까?
답변1
나는 이것이 코멘트 답변이어야 한다는 것을 알고 있습니다.
이 작업을 수행할 수 있는 도구가 있는지 기억이 나지 않습니다.하지만! 파일을 분류한 다음 sort
및 를 사용하여 작업을 수행하면 uniq
정확한 효과를 얻을 수 있습니다.
cat A B | sort | uniq
그러면 두 파일의 내용이 합쳐진 다음 줄이 정렬되고 중복된 내용이 제거됩니다.
결과 출력:
command 1
command 2
command 3
command 4
command 5
답변2
내가 아는 한 당신이 보여준 방식으로 파일을 병합할 수 있는 도구는 없습니다. 대부분의 병합/비교 도구는 두 파일이 서로 다른 위치에 함께 배치될 수 있다는 것을 도구가 알 수 있도록 줄 주위에 일정 수준의 컨텍스트를 가짐으로써 작동합니다.
당신이 보여주는 것은 실제 맥락이 없기 때문에 이러한 도구가 어떻게 이 작업을 수행할 수 있는지 모르겠습니다.
답변3
다음을 수행할 수 있습니다.
sed -e 's/_/_u/g;s/%/_p/g;/{$/s/^/%/;/{$/,/}$/b' -e 's/^/%/' A B |
tr '%\n' '\n%' |
sort -u |
tr '%\n' '\n%' |
sed 's/%//g;s/_p/%/g;s/_u/_/g'
파일에 해당 %
문자가 포함되어 있지 않으면 다음과 같이 단순화할 수 있습니다.
sed -e '/{$/s/^/%/;/{$/,/}$/b' -e 's/^/%/' A B |
tr '%\n' '\n%' |
sort -u |
tr -d '\n' |
tr % '\n'