簡體   English   中英

Bash 腳本優化:行復制

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM