여러 줄이 포함된 로그 파일이 있는데 각 줄에는 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