If, Then, Else 스크립팅

If, Then, Else 스크립팅

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

관련 정보