我試圖從文件中刪除一些特定的行。我有一個索引數組,保持哪些行將被刪除。我爲這個問題使用了以下命令。但是,它僅刪除索引數組第一個成員指向的一行。我無法刪除其餘的行。命令有問題嗎?通過使用索引數組刪除文件中的行
**sed -i ${index_array}'d' $file_name**
我試圖從文件中刪除一些特定的行。我有一個索引數組,保持哪些行將被刪除。我爲這個問題使用了以下命令。但是,它僅刪除索引數組第一個成員指向的一行。我無法刪除其餘的行。命令有問題嗎?通過使用索引數組刪除文件中的行
**sed -i ${index_array}'d' $file_name**
它應該是:
for i in "${index_array[@]}"
do
sed -i "${i}d" "$filename"
done
這可能會爲你工作(GNU sed的& BASH):
sed -i ''"${index_array[*]/%/d;}"'' file
或:
sed -i -f - <<<"${index_array[@]/%/d;}" file
或:
echo "${index_array[@]/%/d;}" | sed -i -f - file
for line in "${index_array[@]}"; do sed_script+=" -e '/^$line\$/d'"; done
sed -i "$sed_script" file
nums=$(echo ${index_array[@]} | sed 's/ /\\|/')
sed = input_file | sed '
{
N
s/\n//
}
' | sed "/^$nums /d" | sed 's/^[0-9]* //'
你能撲通您的sed語句在for循環中,通過每個項目index_array走向何方? – OrionRogue
for $ i in $ {index_array} do sed -i $ {i} d文件名完成 – OrionRogue