If, else スクリプト

If, else スクリプト

複数行を含むログファイルがあり、各行にはIP、ユーザー名、およびURLがあります。各IPを連続して取得するエントリを作成し、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

関連情報