hostname -i
私が実行して次のような結果が得られたとしましょう。
root@linux:/# hostname -i
192.168.1.1
root@linux:/#
出力(IPアドレスのみ)をパイピングして、特定のファイルの特定の文字列をどのように置き換えることができますか?
このコマンドの出力(たとえば、sed
ORを使用)を次の部分にパイプしたいと思います。awk
my_server_ip
"server":"my_server_ip",
"server_port":8388,
ベストアンサー1
"server"
特定の文字列ではなく末尾の引用符の内容を変更したいようです。my_server_ip
その場合は、sedを使用してください。
$ sed 's/\("server":"\)[^"]*/\1'"$(hostname -i)"'/' file
"server":"<the host name>",
"server_port":8388,
またはawk(hostname -i
出力に逆参照メタ文字またはsed区切り文字を含めることができる場合はより強力ですが、そうではありません):
$ awk -v h="$(hostname -i)" 'BEGIN{FS=OFS="\""} $2=="server"{$4=h} 1' file
"server":"<the host name>",
"server_port":8388,