使用Perl如何找到"-2.71570"并在重复的文件中增加-0.1
我有一个文本文件,包含以下行:
B 0.00000 0.00000 -2.71570
H 0.00000 1.18000 -2.71570
H -1.02190 -0.59000 -2.71570
H 1.02190 -0.59000 -2.71570
像这样如何(假设您使用bash):
dec=0.1; for i in {1..15}; do perl -ane 'BEGIN { $dec=shift }; print join( "t", @F[0..2], $F[3]-$dec ), "n"' $dec num_table.txt > file_$i.txt; dec=$(bc <<<$dec+.1); done
将以减量值0.1开始,并使用shell循环创建15个新文件,其中最后一个字段被减量值修改,每次增加0.1。我不完全清楚您想要的格式,但也许这会让您开始。
在perl 1-line中
perl -pe "s/([-d.]+)$/$1 -.1/e" foo.txt > foo.txt.1
现在再重复14次,你就有15个文件了。
或者使用下面的脚本一次创建15个文件。
perl -lne '
BEGIN {@f=map {open my $fh,q{>},qq{$ARGV[0].$_};$fh} (1..15)}
for $i (0..$#f) {s/([-d.]+)$/$1-.1/e; print {$f[$i]} $_}
' foo.txt