一部のテキストをsedに置き換える

一部のテキストをsedに置き換える

キーワードLAYOUT_PRIMARYを検索してresis_testをm.gdsに置き換えようとしました。

sed -e 's/\(LAYOUT PRIMARY\).*\1 /m.gds/' < FILE.ex > b

ファイル.ex

LAYOUT PRIMARY "resis_test"
LAYOUT SYSTEM GDSII

DRC RESULTS DATABASE "resis_test.drc.results" ASCII 
DRC MAXIMUM RESULTS 1000
DRC MAXIMUM VERTEX 199

答え1

より安全

sed -e '/LAYOUT PRIMARY/s/resis_test/m.gds/' < FILE.ex > b

答え2

この試み:

 sed -e 's/\(LAYOUT PRIMARY\).*/\1 m.gds/'
                               ^^^

ソースセクションではなく置換セクションでキャプチャリンググループへの呼び出しを確認してください。

答え3

次のコマンドを使用してテストすると、うまく動作します。

コマンド1:

awk '/LAYOUT PRIMARY/{print gsub("resis_test","m.gds",$0)}1' filename

コマンド2:

sed '/LAYOUT PRIMARY/s/resis_test/m\.gds/g' filename

出力

LAYOUT PRIMARY "m.gds"
LAYOUT SYSTEM GDSII

DRC RESULTS DATABASE "resis_test.drc.results" ASCII 
DRC MAXIMUM RESULTS 1000
DRC MAXIMUM VERTEX 199

関連情報