ファイルから特定の行を削除しようとしています。どの行が削除されるかを保持するインデックス配列があります。この問題には次のコマンドを使用しました。ただし、インデックス配列の最初のメンバーが指す 1 行だけを削除します。残りの行を削除できません。コマンドに問題はありませんか?
**sed -i ${index_array}'d' $file_name**
これはあなたのために働くかもしれません(GNU sed&BASH):
sed -i ''"${index_array[*]/%/d;}"'' file
また:
sed -i -f - <<<"${index_array[@]/%/d;}" file
また:
echo "${index_array[@]/%/d;}" | sed -i -f - file
nums=$(echo ${index_array[@]} | sed 's/ /\\|/')
sed = input_file | sed '
{
N
s/\n/ /
}
' | sed "/^$nums /d" | sed 's/^[0-9]* //'
for line in "${index_array[@]}"; do sed_script+=" -e '/^$line\$/d'"; done
sed -i "$sed_script" file
そのはず:
for i in "${index_array[@]}"
do
sed -i "${i}d" "$filename"
done