【发布时间】:2011-09-25 17:32:57
【问题描述】:
我想删除文件中包含“test”一词的所有行,但如果该行包含“test@”,那么我不想删除它。
使用 sed 可能有一些时髦的方法,但我很挣扎,我尝试使用 sed 编写一个 bash 循环,但这可能很愚蠢。
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
如你所知,我是这方面的新手 :(
【问题讨论】:
-
当您在示例中使用“root”时,请不要在描述中使用“test”。当您在示例中使用“testsh”/“test@”时,请不要在描述中使用“test”/“test@”。请在写问题时更加小心。请问?