如果、那麼、否則腳本

如果、那麼、否則腳本

我有一個包含多行的日誌文件,每行都有一個 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

相關內容