ファイル内の文字列で1つまたは2つの数字を検索して置き換える必要があります。これらの文字列は、次の形式のIPアドレスです。
10.xx.y.z
xx
1文字でも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
。