複数グループのキャプチャ/修正にsedを使用する

複数グループのキャプチャ/修正にsedを使用する

C / C ++ファイルの依存関係グラフの生成結果を修正したいと思いますsedgcc -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

おすすめ記事