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