sdiffの出力を3つのファイルに分割する方法

sdiffの出力を3つのファイルに分割する方法

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

おすすめ記事