我有一个工作脚本,但它在大文件上相当慢。它只是将一堆行从一个文件复制到另一个文件的给定位置。下面是脚本:
#!/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"