sedを使用してIPアドレス文字列の中央にある文字を置き換えます。

sedを使用してIPアドレス文字列の中央にある文字を置き換えます。

ファイル内の文字列で1つまたは2つの数字を検索して置き換える必要があります。これらの文字列は、次の形式のIPアドレスです。

10.xx.y.z 

xx1文字でも2文字でもかまいません。

xx一文字に変えたい0から

10.0.y.z 

y合計値を保持しますz

この文字列はファイルに複数回現れることがあります。sedこれを行うための要求は何ですか?

ベストアンサー1

n=[:digit:] o="[$n]\{1,3\}\."

sed -e"s/^/ /" \
    -e"s/\([^.$n]$o\)$o\($o${o%.})/\10.\2/g" \
    -e"s/.//" \
<in >out

オクテットは8ビットに制限されず、最後のオクテットは3桁に制限されませんが、おそらく十分です。

ファイルをその場で編集するには、最高これをする方法-i(一般的に危険なスイッチをまたはperl一部で使用する代わりにsedまず、ファイルの一時コピーをインポートして編集し、編集した一時コピーを元のファイルに書き換えます。ほとんどの殻bashおよび含むzshここからドキュメントをリクエストすると、セキュリティ一時ファイルが自動的に提供されます。

sed -e"#...script..." \
<<IN  >infile
$(cat <infile)
IN

上記はすべての末尾の空行を削除します。infileその場合、このサイトには必要に応じて保存する方法を示す他の回答もたくさんあります。また、nullバイトがないと処理しませんzsh

おすすめ記事