If、Then、Else スクリプト

If、Then、Else スクリプト

ログ ファイルには複数の行があり、各行には IP、ユーザー名、URL が含まれています。行内の各 IP を取得し、10 で始まる場合は、その行の末尾に「ON」という単語を追加するものを作成する必要があります。10 で始まらないその他の IP を含む他のすべての行には、「OFF」という単語を追加する必要があります。

ログファイルの例:

10.10.10.10 jsmith1234 [URL] 
173.10.10.10 jsmith1234 [URL]

私が望むものの例:

10.10.10.10 jsmith1234 [URL] ON
173.10.10.10 jsmith1234 [URL] OFF

if、then、else ステートメント (bash シェル スクリプトで使用) が機能すると思いますが、私はこれらのステートメントに非常に不慣れで、どこから始めればよいかわかりません。

答え1

何か試してみましたか? 短い例:

while read line; do
    if [[ $line = \10.* ]] ; then
        echo "$line ON"
    else
        echo "$line OFF"
    fi
done

結果として:

user@:~$ cat testo.txt 
10.10.10.10 jsmith1234 [URL] 
173.10.10.10 jsmith1234 [URL]

user@:~$ bash testo.sh < testo.txt 
10.10.10.10 jsmith1234 [URL] ON
173.10.10.10 jsmith1234 [URL] OFF

答え2

私は以下の解決策を使って自分で問題を解決しました:

sed '/^10.*:/ s/$/ ON/' test_file.txt

sed '/^10.*:/ s/$/ OFF/' test_file.txt

答え3

cat logfile | while read line
do
  echo ${line} | grep ^"10\." >/dev/null; r=${?}
  if [ ${r} -eq 0 ]
  then
    line=${line}" ON"
  else
    line=${line}" OFF"
  fi
echo ${line}
done > new_logfile

関連情報