我正在尝试从文件中删除一些特定的行。我有一个索引数组来保存哪些行将被删除。对于这个问题,我使用了以下命令。但是,它只删除索引数组的第一个成员指向的一行。我无法删除其余的行。命令有问题吗?
**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 i in "${index_array[@]}"
do
sed -i "${i}d" "$filename"
done
for line in "${index_array[@]}"; do sed_script+=" -e '/^$line\$/d'"; done
sed -i "$sed_script" file