行が多いファイルがあります。
一部の行は一致しない中括弧で終わります(例: " }
")。
これは、以下を含む行でのみ機能します。".to"
sedを使用して文字列( "")を含むが、行のどの位置(前または後ろ)に他の文字列( "")がなく、 " "で終わるすべての行から一致しない中括弧を.to
削除するにはどうすればよいですか?{
.to
}
それはまるでsed -i '/\.to/s/[[:space:]]*\}//' file
ただし、これは文字列( " .to
")を含み、}
" "で終わるすべての行に適用されます。
{
次のように中かっこ/角かっこなしで行で機能したいと思います。}
このために、複数行中括弧を心配する必要はありません。クエリに一致する行(この場合は「.to」)を制限すると、これを防ぐのに役立ちます。
例えば
expect(:size).to eq 2 }
expect(:first).to be_persisted }
expect("first.number_field").to eq 10 }
expect(:last).to be_persisted }
expect("last.number_field").to eq 10 }
this remains unchanged }
this {remains} unchanged }
this {
is ok }
=>
expect(:size).to eq 2
expect(:first).to be_persisted
expect("first.number_field").to eq 10
expect(:last).to be_persisted
expect("last.number_field").to eq 10
this remains unchanged }
this {remains} unchanged }
this {
is ok }
ベストアンサー1
そして真珠そして高度な正規表現を見る:
perl -lpe 's/((?<!\{).*?\.to.*)}\s*$/$1/' file
そしてアッ:
awk '!/{/ && /\.to.*}/{sub(/\}/, "", $NF)}1' file