Удалить строку в файле, совпадающую с одной строкой, но не соответствующую другой - SED, BASH?

Я хочу удалить все строки в файле, содержащие слово «test», но если эта строка содержит «test @», то я не хочу чтобы удалить его.

Вероятно, есть какой-нибудь забавный способ сделать это с помощью sed, но я борюсь, я пытался написать цикл bash с помощью sed, но это, вероятно, глупо.

filetest=/tmp/filetest
filetest_tmp=/tmp/filetest.tmp<
line_num=0

while read line; do
        line_num=$(($line_num+1))
        if [[ $line == *rootsh* ]] && [[ $line != *root@* ]]
                then
                sed -e "${line_num}"'d' $filetest >> $filetest_tmp
        fi
done < $filetest
cp $syslog_tmp $filetest

Как вы можете сказать, я newb здесь: (

5
задан WonderOatmeal 30 June 2011 в 06:43
поделиться