如果、那么、否则脚本

如果、那么、否则脚本

我有一个包含多行的日志文件,每行都有一个 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 shell 脚本中使用),但我对这些语句很陌生,不知道从哪里开始。

答案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

相关内容