2012-05-10 85 views
2

我試圖從文件中刪除一些特定的行。我有一個索引數組,保持哪些行將被刪除。我爲這個問題使用了以下命令。但是,它僅刪除索引數組第一個成員指向的一行。我無法刪除其餘的行。命令有問題嗎?通過使用索引數組刪除文件中的行

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

你能撲通您的sed語句在for循環中,通過每個項目index_array走向何方? – OrionRogue

+0

for $ i in $ {index_array} do sed -i $ {i} d文件名完成 – OrionRogue

回答

0

它應該是:

for i in "${index_array[@]}" 
do 
    sed -i "${i}d" "$filename" 
done 
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 
0
for line in "${index_array[@]}"; do sed_script+=" -e '/^$line\$/d'"; done 
sed -i "$sed_script" file 
0
nums=$(echo ${index_array[@]} | sed 's/ /\\|/') 

sed = input_file | sed ' 
{ 
N 
s/\n//
} 
' | sed "/^$nums /d" | sed 's/^[0-9]* //' 
相關問題