使用索引数组从文件中删除行

时间:2012-05-10 08:45:00

标签: bash sed

我正在尝试从文件中删除一些特定的行。我有一个索引数组,可以保留哪些行将被删除。我已经使用以下命令来解决这个问题。但是,它只删除索引数组的第一个成员指向的一行。我无法删除其余的行。该命令有问题吗?

**sed -i ${index_array}'d' $file_name**

4 个答案:

答案 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]* //'