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