1

IPアドレスを含むファイルがいくつかあります。スクリプトを作成しているので、その前に作成したファイルに基づいたIPアドレスで新しいユーザーファイルを作成する方法を理解する必要があります。最後のファイルにABCDのIPが含まれている場合、新しいファイルはABC(D + 4)である必要があります。

「sed」コマンドと「awk」コマンドを使用する必要があると思いますが、何も機能していません。スクリプトのこの部分をどのように記述しますか?

4

1 に答える 1

6

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への指示です。
  • 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
于 2013-01-02T22:40:23.393 に答える