テキストエディタは「元に戻す」機能を提供しますが、コマンドラインユーティリティでは機能しません。置き換えを行うためのスクリプトを書いてから、同じことを逆にするために置換ファイルを逆にすることができます。
ここにreplacements.txt '内の代替品のシリーズを取り、スクリプトの入力に対してそれらを実行するスクリプトです:あなたは「repl.pl」としてこのファイルを保存した場合
#!/usr/bin/perl -w
use strict;
open REPL, "<replacements.txt";
my @replacements;
while (<REPL>) {
chomp;
push @replacements, [ split ];
}
close REPL;
while (<>) {
for my $r (@replacements) { s/$r->[0]/$r->[1]/g }
print;
}
、そしてあなたがあなたのを保存
perl repl.pl input.txt >output.txt
は、あなたの置換が「逆replacements.txt」をファイルに変換するには、単純なawkコマンドを使用することができます:
をあなたはこのようにそれを使用することができ、「replacements.txt」として上記のファイル
awk '{ print $2, $1 }' replacements.txt >reverse-replacements.txt
次に、順方向スクリプトの代わりに逆方向置換ファイルを使用するようにPerlスクリプトを変更します。
あなたドンので、あなたは、高品質な答えを得るためにするためにあなたの質問はまだあまりにも曖昧である:
変更を逆にするにはあなたがしようとしていることについて十分な情報を述べていない。これらの置換えを別のドキュメントで実行しようとしているのですか、ここに示す情報のみを操作しようとしていますか?差し替えは可逆的であることは保証されません。たとえば、2番目の列の2つの項目が同一である場合、または置換が行われる前に右側の列にある項目が入力に既に表示されている場合を考えてみましょう。これらの2つの列を交換するだけであれば、はるかに簡単です。 –
ファイルは1つだけですか?最初にファイルのコピーを作成し、置き換えてから、後でコピーからファイルを復元することはできますか? –
私の入力(別の文書で)は可逆的であることが保証されています。 – user490735