ログ ファイルには複数の行があり、各行には 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 シェル スクリプトで使用) が機能すると思いますが、私はこれらのステートメントに非常に不慣れで、どこから始めればよいかわかりません。
答え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