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