sedはDNSログ文字列の形式を変更します。

sedはDNSログ文字列の形式を変更します。

sedを使って次のテキストを変更したいと思います。

(3)www(5)first(3)nth(6)domain(3)com(0)

到着する:

www.first.nth.domain.com

2〜n + 3個のグループ(無限大)があると仮定すると、角かっこ区切り記号の間の各グループをキャプチャし、ピリオド区切り順に再構成できますか?別の方法がありますか?

私はすでに次のことに慣れています。

s/\(\d+\)/./g

しかし、これはただ次のものを生成します:

.www.first.nth.domain.com.

ベストアンサー1

これはあなたの要件を満たすようです。実行の長さを確認するために括弧内の数字を使用するかどうかはわかりませんが、そうではないとします。

echo '(3)www(5)first(3)nth(6)domain(3)com(0)' |
sed -r -e 's/^\([0-9]+\)//' -e 's/(.)\([0-9]+\)(.)/\1.\2/g' -e 's/\([0-9]+\)$//'
www.first.nth.domain.com

sed3つの異なるREが使用されます。最初と最後は、境界付きの先行式と末尾の(\d+)式を削除します。中央部分は残りの部分を剥がした。

おすすめ記事