出力を3つのファイルに分割する必要があります。変更された内容はに保存され、追加されたコンテンツはに保存され、削除されたコンテンツはに保存されます。これらの区切り文字は、「(縦棒)、」(より大きい)および「」(より小さい)記号に基づいている必要があります。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。各行を3回解析する必要がないようにするためのより良い方法があります。