C / C ++ファイルの依存関係グラフの生成結果を修正したいと思いますsed
。gcc -MM
入力は次のとおりです。
ThreadCrash.o : ThreadCrash.cpp ThreadCrash.h hdr1.h \
../inc/hdr2.h ../inc/hdr3.h \
../inc/hdr4.h ../inc/hdr4.h
次のように表示する必要があります。
ThreadCrash.o : \
ThreadCrash.cpp \
ThreadCrash.h \
hdr1.h \
../inc/hdr2.h \
../inc/hdr3.h \
../inc/hdr4.h \
../inc/hdr4.h
置換の「検索」部分に対してキャプチャグループを「繰り返し」しようとしましたが、(.*)*
代替文字列を構成する方法がわかりませんでした。
私はsedに頼らないので、awk
などの簡単な方法を使用すると、大変感謝します。
ありがとうございます!
ベストアンサー1
すべてのUNIXシステムのすべてのシェルでawkを使用します。
$ cat tst.awk
BEGIN { RS="" }
{
gsub(/\\/,"")
printf "%s ", $1
for (i=2; i<NF; i++) {
printf "%s \\\n", $i
}
print $NF
}
$ awk -f tst.awk file
ThreadCrash.o : \
ThreadCrash.cpp \
ThreadCrash.h \
hdr1.h \
../inc/hdr2.h \
../inc/hdr3.h \
../inc/hdr4.h \
../inc/hdr4.h