我正在尝试从文件中删除一些特定的行。我有一个索引数组,可以保留哪些行将被删除。我已经使用以下命令来解决这个问题。但是,它只删除索引数组的第一个成员指向的一行。我无法删除其余的行。该命令有问题吗?
**sed -i ${index_array}'d' $file_name**
答案 0 :(得分:1)
这可能对你有用(GNU sed& BASH):
sed -i ''"${index_array[*]/%/d;}"'' file
或:
sed -i -f - <<<"${index_array[@]/%/d;}" file
或:
echo "${index_array[@]/%/d;}" | sed -i -f - file
答案 1 :(得分:0)
应该是:
for i in "${index_array[@]}"
do
sed -i "${i}d" "$filename"
done
答案 2 :(得分:0)
for line in "${index_array[@]}"; do sed_script+=" -e '/^$line\$/d'"; done
sed -i "$sed_script" file
答案 3 :(得分:0)
nums=$(echo ${index_array[@]} | sed 's/ /\\|/')
sed = input_file | sed '
{
N
s/\n/ /
}
' | sed "/^$nums /d" | sed 's/^[0-9]* //'