2

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

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

4 回答 4

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
于 2012-05-10T10:50:34.153 回答
0
nums=$(echo ${index_array[@]} | sed 's/ /\\|/')

sed = input_file | sed '
{
N
s/\n/ /
}
' | sed "/^$nums /d" | sed 's/^[0-9]* //'
于 2012-07-23T04:56:03.543 回答
0

它应该是:

for i in "${index_array[@]}"
do
    sed -i "${i}d" "$filename"
done
于 2012-05-10T09:03:30.253 回答
0
for line in "${index_array[@]}"; do sed_script+=" -e '/^$line\$/d'"; done
sed -i "$sed_script" file
于 2012-05-10T13:13:13.220 回答