If, else 스크립트

If, else 스크립트

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

관련 정보