複数行を含むログファイルがあり、各行には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