複数の行で区切られたパターンを持つファイルが{}
あり、特定のシンタックスを持つ 2 つの行を見つけたいのですが、ソース ファイルで次のような行が表示されることがあります。
{ some text size =
0 }
また
{ some text size
= 0 }
その他の場合
{some text size = 0 }
ソースファイルをフィルタリングし、分離条件に一致する行を結合して 1 行に変換したい!
Perl ソリューション:
シンプルなコマンドライン:
perl -pe 'local $/; s/({.*size *(?:= *)?)\n/$1/g;' infile >outfile
脚本:
#!/usr/bin/env perl
use strict;
use warnings;
$filename = "/path/to/file"
open FILE, "<$filename" or die $!;
local $/;
my $txt = <FILE>;
close FILE;
$txt =~ s/({.*size) *(?:= *\n|\n *=) *(0 *})/$1 = $2/g;
open FILE, ">$filename" or die $!;
print FILE $txt;
close FILE;