sdiff의 출력을 세 개의 파일로 분할하는 방법

sdiff의 출력을 세 개의 파일로 분할하는 방법

출력을 세 개의 파일로 분할해야 합니다. 수정된 내용은 에 저장되고, 추가된 내용은 에 저장되며, 삭제된 내용은 에 저장됩니다. 이러한 구분은 " "(세로 막대), " "(보다 큼) 및 " "(보다 작음) 기호를 기반으로 해야 합니다.sdiff -s file1 file2Changedfound.txtAppend.txtDelete.txt|><

어떻게 해야 합니까?

답변1

tee이를 위해 서브쉘을 사용할 수 있습니다 . 다음과 같은 데이터가 있는 경우:

$ cat file1 
0
1
2
3

$ cat file2
1
2
3 4
5

$ sdiff -s file1 file2
0                                 <
3                                 | 3 4
                                  > 5

tee다음과 같이 실행되는 서브셸에서 파이프를 연결하고 일치시킬 수 있습니다 sed.

$ sdiff -s file1 file2 | \
  tee >(sed -ne 's/\s*<$//p' > Delete.txt) | \
  tee >(sed -ne 's/^\s*>\s//p' > Append.txt ) | \
  tee >(sed -ne 's/^.*\s|\s//p' > ChangedFound.txt)

$ cat Delete.txt
0

$ cat Append.txt
5

$ cat ChangedFound.txt
3 4

awkPS. 각 줄을 세 번 구문 분석할 필요가 없도록 하는 더 좋은 방법이 있습니다 .

관련 정보