IPアドレスを含むファイルがいくつかあります。スクリプトを作成しているので、その前に作成したファイルに基づいたIPアドレスで新しいユーザーファイルを作成する方法を理解する必要があります。最後のファイルにABCDのIPが含まれている場合、新しいファイルはABC(D + 4)である必要があります。
「sed」コマンドと「awk」コマンドを使用する必要があると思いますが、何も機能していません。スクリプトのこの部分をどのように記述しますか?
input
始めるための方法は次のとおりです。次のようなファイルがあるとします。
入力:の内容input
127.0.0.1
127.0.0.2
127.0.0.3
127.0.0.200
コマンドラインで実行できます。
awk 'BEGIN{FS=OFS="."} {$4=$4+4; print}' input > output
ここでawkが行っていることの説明:
awk '...'
-主にファイルの行ごとの操作に使用されるツールであるawkを呼び出します。一重引用符で囲まれたものは、awkへの指示です。BEGIN{FS=OFS="."}
.
-入力と出力の両方の区切り文字として使用するようにawkに指示します。FS
「FieldSeparator」の略です{$4=$4+4; print}
--4$4
番目のフィールドを意味します。.
は区切り文字なので、4番目のフィールドにD
対応し、4番目のフィールドに整数値を追加し4
ます。これprint
は、行全体を印刷するための略記です。input
-入力ファイルにawkの引数として名前を付けます。猫を救う> output
-出力をファイルにリダイレクトして、それに基づいてユーザーファイルを作成する前に問題がないかどうかを検査できるようにします。出力:の内容output
127.0.0.5
127.0.0.6
127.0.0.7
127.0.0.204
次にoutput
、一度に1行ずつ読み取って、必要に応じて新しいユーザーファイルを作成できます。おそらく、次の行に沿って何かを含む別のスクリプトを作成できます。
while read line
do
echo "this is a user file" > "$line"
done < output
(そしてあなたのニーズに合わせて調整してください)
最後に、上記で何が起こっているかを理解している限り、output
ファイルを完全にスキップして、これをすべて1つのライナーで行うことができます。
awk 'BEGIN{FS=OFS="."} {$4=$4+4; print}' input | while read line; do echo "hello world" > "$line"; done