출력을 세 개의 파일로 분할해야 합니다. 수정된 내용은 에 저장되고, 추가된 내용은 에 저장되며, 삭제된 내용은 에 저장됩니다. 이러한 구분은 " "(세로 막대), " "(보다 큼) 및 " "(보다 작음) 기호를 기반으로 해야 합니다.sdiff -s file1 file2
Changedfound.txt
Append.txt
Delete.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
awk
PS. 각 줄을 세 번 구문 분석할 필요가 없도록 하는 더 좋은 방법이 있습니다 .