2

ファイルから特定の行を削除しようとしています。どの行が削除されるかを保持するインデックス配列があります。この問題には次のコマンドを使用しました。ただし、インデックス配列の最初のメンバーが指す 1 行だけを削除します。残りの行を削除できません。コマンドに問題はありませんか?

**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 line in "${index_array[@]}"; do sed_script+=" -e '/^$line\$/d'"; done
sed -i "$sed_script" file
于 2012-05-10T13:13:13.220 に答える
0

そのはず:

for i in "${index_array[@]}"
do
    sed -i "${i}d" "$filename"
done
于 2012-05-10T09:03:30.253 に答える