ファイルに文字列を追加して他のファイルのパターンの代わりに使用するには、teeを使用します。

ファイルに文字列を追加して他のファイルのパターンの代わりに使用するには、teeを使用します。

次のコードがあります。

cat file | grep example | sed 's/http/https/' >> report.txt

このコマンドの出力は次のとおりです。

https://example.com/page/index.html

これにより、HTTPSを使用してファイルへのリンクが追加されます。しかし、2番目のファイルの「URL」も同じ出力に置き換えたいと思います。

2番目のファイルの内容:

TEXT TEXT
TEXT

URL

TEXT TEXT

2番目のファイルの必須変更:

TEXT TEXT
TEXT

https://example.com/page/index.html

TEXT TEXT

可能ですか?

PS:実際には単純な猫ではありませんが、このコマンドでアップロードプロセスを開始するため、コマンドを再度繰り返すことはできません。

答え1

ちなみに、これは必要ではなく、一人で行うこともcatできます。grepsed

sed '/URL/!d;s/http/&s/'

とにかく、一連のコマンドを実行して単一の出力ラインを生成すると仮定すると、次のことができます。

... | tee -a report.txt | sed 's|[\&/]|\\&|g;s|.*|s/URL/&/g|' | sed -f- -i infile.json

これにより、出力が追加されるreport.txtだけでなく、コマンドsedにパイプされ、ファイルを内部で編集する別のコマンドにパイプされます。sedsed.json

答え2

以下は、短い質問に対する短い答えです。

cat file | grep URL | sed 's/http/https/' | tee -a report.txt | while read $LINE; do
    sed --in-place -e "s·URL·$LINE·" thejsonfile.json
done

スクリプトの3文字をすべて含まれていない文字に·置き換えるか(中間点)のままにしてください。sed$LINE·

while read編集:もう一つの質問では、ループへのパイプ接続がパフォーマンスやその他の理由で悪い習慣と見なされることを学びました。これで作業を行うことができますので、ここに残しておきます。

答え3

sed -n '/example/s/http/&s/p' file | tee -a report.txt |\
sed -e 'G;s/$/./;G;s/$/wq/;h;s|.*|/URL/c|;G' | ed -s - json_file

最初の出力に基づいてコードをビルドedし、それを使用してjsonファイルを編集します。

関連情報