テキストファイルを解析して特定の部分を置き換える必要があります。私はsed
これがそうする方法だと思いますが、複数の行を処理する方法がわかりません。
私が探しているパターンは
set cells { \
cell1 \
cell2 \
cell3 \
}
変数の内容に置き換えたいです。
以下はトリックを実行する必要がありますが、複数行では機能しません。どんなアイデアがありますか?
sed "s/set cells {.*}/set cells {$cell_variable}/" file
ベストアンサー1
次の場合sed
:
sed -i.bak ':a;N;$!ba;s/set cells {.*}/set cells{\n'$cell_variable'\n}/g' file
-i.bak
インライン編集の前に元のファイルのバックアップを作成します。:a
a
再度移動するラベルを作成します。N
パターン空間に次の入力行を追加します。$!
最後の行だけじゃなかったら…ba
ラベルに戻るa
s///g
パターンの検索と置換
より簡単な解決策perl
:
perl -0777 -i.bak -pe "s/set cells \{.*\}/set cells{\n$cell_variable\n}/igs" file
-0777
Perlがファイル全体を飲み込むようにします。-i.bak
インライン編集の前に元のファイルのバックアップを作成します。