[英]Bash script optimization: lines copy
我有一個工作腳本,但它在處理大文件時速度很慢。 它只是將一堆行從一個文件復制到給定 position 處的另一個文件。這里是腳本:
#!/bin/bash
source_file="..."
dest_file="..."
first_line_to_copy=...
last_line_to_copy=...
dest_line=...
cat "$source_file" | sed -n "$first_line_to_copy,$last_line_to_copy p" | while IFS= read -r line;
do
sed -i "$dest_line i \\$line" $dest_file
dest_line=$(($dest_line+1))
done
我沒有成功地用一個 sed 命令管理副本。 所以它總是打開/關閉目標文件,在 dest_line 尋找它真正消耗大量行的時間。
謝謝你的幫助
首先將[$first_line_to_copy,$last_line_to_copy]
范圍內的行復制到一個臨時文件,然后將該文件插入到指定位置:
tempfile=/tmp/tempfile.$$
sed -n "$first_line_to_copy,$last_line_to_copy p" "$source_file" > "$tempfile"
sed -i.backup "$dest_line r $tempfile" "$dest_file"
rm -f "$tempfile"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.