1

フラグsvn diffとともに使用すると、次のようなものが返されます。--summarizeこれをsedまたはgrepに渡して、次のことを行うにはどうすればよいでしょうか。

  1. 「D」で始まる行をすべて削除します(削除されたファイル)
  2. その後、タブとともに「M」、「A」、「MM」(またはその他の場合)のプレフィックスを削除します。
  3. ファイル名/フォルダのみを残してURLパスを削除します。
  4. ファイルに保存

例:

D   https://localhost/example/test1.php
D   https://localhost/example/test2.php
M   https://localhost/example/test3.php
M   https://localhost/example/test4.php
A   https://localhost/example/test5.php
M   https://localhost/example/test6.php
A   https://localhost/example/test7.php
M   https://localhost/example/test8.php
M   https://localhost/example/test9.php
M   https://localhost/example/test10.php
A   https://localhost/example/test11.php
M   https://localhost/example/test12.php
M   https://localhost/example/test13.php
MM  https://localhost/example/test.php
M   https://localhost/test0.php

その後、次のようになります。

/example/test3.php
/example/test4.php
/example/test5.php
/example/test6.php
/example/test7.php
/example/test8.php
/example/test9.php
/example/test10.php
/example/test11.php
/example/test12.php
/example/test13.php
/example/test.php
/test0.php
4

1 に答える 1

1

このようにsed

$ svn diff --summarize | sed -e '/^D/d' -e 's/.*host//'
/example/test3.php
/example/test4.php
/example/test5.php
/example/test6.php
/example/test7.php
/example/test8.php
/example/test9.php
/example/test10.php
/example/test11.php
/example/test12.php
/example/test13.php
/example/test.php
/test0.php

# Redirect output to file
$ svn diff --summarize | sed -e '/^D/d' -e 's/.*host//' > file

の出力をにパイプ する必要があります。最初の部分はで始まるすべての行を削除し、2番目の部分はファイル使用リダイレクトに格納するために何もなしですべてを置き換えます。|svnsed'/^D/d'Ds/.*host//host > file

と同様のロジックgrep

$ svn diff --summarize | grep '^[^D]' file | grep -Po '(?<=host).*' > file

1つ目はgrepで始まる行を除外しD、2つ目は前向きの先読みを使用して。-Poの後の行の一部のみを表示しますhost

于 2013-01-05T21:21:42.813 に答える