他のファイルのパターンを一致させた後にインラインファイルのテキストを挿入する

他のファイルのパターンを一致させた後にインラインファイルのテキストを挿入する

sedを使用してファイルの内容を取得し、一致するパターンの後に別のファイルに挿入しようとしています。私の問題は次のようによく似ています。この問題しかし、ファイルの内容を新しい行ではなくインラインで挿入したいと思います。どうすればいいですか?

私が引用した質問の例を使用すると、最初の答えは私が望むものを正確に実行しますが、挿入がインラインで発生したいと思います。

sed '/First/r file1.txt' infile.txt 

挿入する実際のデータはJSONファイルです。

[
    {
        "foo": "bar", 
        "baz": "biff",
        "data": [
            {
                "a": 1945619, 
                "b": [
                    {
                        "c": 512665, 
                        "d": "futz"
                    }
                ]
            }
        ]
    }
]

ベストアンサー1

あなたがリンクした質問にはすでに良い答えがあります。改行なしで挿入する代わりに、awk以下を使用して少し修正してください。printfprint

awk '/First/ { printf $0; getline < "File1.txt" }1' infile.txt

結果:

Some Text here
FirstThis is text to be inserted into the File.
Second
Some Text here

「最初」の後にスペースやその他の区切り文字を追加する必要があるかもしれません。printf $0 " "; ...


挿入されたファイルに複数行がある場合は、次のようにします。

awk '/First/{printf $0; while(getline line<"File1.txt"){print line};next}1' infile.txt

結果:

Some Text here
First[
    {
        "foo": "bar", 
        "baz": "biff",
        "data": [
            {
                "a": 1945619, 
                "b": [
                    {
                        "c": 512665, 
                        "d": "futz"
                    }
                ]
            }
        ]
    }
]
Second
Some Text here

おすすめ記事