【发布时间】:2012-10-21 18:37:53
【问题描述】:
我正在尝试使用 sed 删除文件的行,但我不想删除这些行,除非搜索字符串完全匹配。即。
#!/bin/bash
set -x
file="list1"
index=0
while read line ;
do
if [ ! "$line" == "@@@" ];
then
MYARRAY[$index]="$line"
#index=$(($index+1))
let index++
else
break
fi
done < $file
#echo "MYARRAY is: ${MYARRAY[*]}"
#echo "The file: ${index}"
index1=0
for i in "${MYARRAY[@]}"
do
lineNumber=$((index1 + 1))
sed -i "/${MYARRAY[$index1]}/d" "$file"
let index1++
done
sed -i "/@@@/d" "$file"
#remove empty lines
sed -i '/^$/d' "$file"
所以我有一个测试文件(list1):
line1
line2
line3
line4
line5
line6
@@@
line1_1
line2_1
脚本运行后,我最终删除了所有行,因为“line1”和“line2”也匹配“line1_1”和“line2_1”
任何帮助将不胜感激!
【问题讨论】: