0
我想用另一個文件中第6-15行的文本替換(作爲示例)文件中第5-15行的文本。但我想要做大約2000個文件,而不是手動執行此操作。更改文件中的行
我可以在perl中編寫一些腳本,但我想嘗試使用任何內置插件。
我想用另一個文件中第6-15行的文本替換(作爲示例)文件中第5-15行的文本。但我想要做大約2000個文件,而不是手動執行此操作。更改文件中的行
我可以在perl中編寫一些腳本,但我想嘗試使用任何內置插件。
我可能會使用的sed
for file in bar baz bam; do
newfile=$(mktemp)
(sed '5q' $file; sed -n '6,15p' foo; sed '1,15d' $file) > $newfile
mv -f $newfile $file
done
或Perl
#!/usr/bin/env perl
use v5.6; # lexical filehandles need Perl >= 5.6
# usage: $0 foo bar baz bam
# replaces lines 4-15 of qw(bar baz bam) with lines 6-15 of foo
my @ins;
{
open my $fh, shift;
while (<$fh>) {
push @ins, $_ if 6 .. 15;
last if $. >= 15;
}
}
$^I = '';
while (<>) {
print if not 5 .. 15;
print @ins if $. == 4;
}
continue {
close ARGV if eof ARGV;
}
但ed
工作過。
echo '6,15wq foo-part' | ed foo
for i in bar baz bam; do
echo -e '5,15d\n4r foo-part\nwq' | ed $i
done
rm -f foo-part
for files in PATTERN ; do
sed -n '1,14p' $files > newfile.$files
sed -n '6,15p' ANOTHERFILE >> newfile.$files
sed -n '15,$p' $files >> newfile.$files
done
注:這不是資源effecient,但我在寫這一個真正強大的服務器;-) 上還有其他幾種方法可以做到這一點。
Sed是要走的地方!它是爲這項任務而設計的。 – 2009-04-21 22:38:41