ncのようなコマンドを実行し、改行なしで{"foo1":"bar1"}{"foo2":"bar2"}
のように出力します。 私は、次のような出力を変更したい:' n'なしでstdinの文字を置換するLinuxコマンド
{"foo1":"bar1"}
{"foo2":"bar2"}
私はnc -U /dev/mysocket | sed 's/}/}\n/g'
を試してみましたが、それは動作しません。 sed
は '\ n'がないと入力を処理しません。
上記のサンプルを出力できるサーバがnc
の場合はありません。これは、より多くのhello.cのことで、次の出力のようだ:gcc -o hello hello.c; ./hello | sed 's/}/}\n/g'
は動作しません :
#include <stdio.h>
#include <unistd.h>
int main()
{
while (1) {
printf("{\"foo1\":\"bar1\"}");
fflush(0);
sleep(1);
}
return 0;
}
だから場合は、が判明しています。 sedは '\ n'がなければ入力ストリームを処理していないようです。 この問題の解決方法に関するご意見はありますか?ありがとうございました。あなたはawk
を使用することができます
ありがとう@anubhava。 'awk'コマンドがうまくいくはずです。しかし、実際に私はAndroid上でコマンドを実行しています。 awkコマンドはありません。実際、このケースはもっと複雑です。 ncをシミュレートするために 'echo'を使うのは適切ではありません。私は単純なhello.cを書いてncコマンドをシミュレートし、問題の編集をしました。 – oliver
Androidのsedソースコードは、 'https://android.googlesource.com/platform/external/toybox/ +/master/toys/posix/sed.c'にあります。私は './hello | 'でunbutuから' gnu sed'を試しました。 sed $ 's /} {/} \\\ n {/ g''であり、まだ動作しません。 – oliver
私はsedソースコードは必要ありません。インストールにアクセスできない場合は、単に 'awk'をインストールしてジョブを完了させてください。前述のようにawkはあなたの 'hello'プログラムでも働いていました。 – anubhava