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」に一致するため、すべての行が削除されます
どんな助けでも大歓迎です!!