.cfgファイルを添付しました。
BK = 2
CM = 2
LEF_M1_NAME = "ME1"
LEF_M2_NAME = "ME2"
LEF_M3_NAME = "ME3"
LEF_M4_NAME = "ME4"
LEF_M5_NAME = "ME5"
NB = 144
NW = 256
viewselect = {
"alf"
"allpvt"
"allpvthtml"
"atpg_netlist"
"clp"
"coord"
"core"
"cpf"
"ctl"
"dssum"
"fast_func_verilog"
"fastscan"
"frontend_gds"
"gds"
"ikos"
"lvlib"
"masis"
"verilog_vhd_stim"
"chd_rtl"
}
component $c set_parameter
Linuxでコマンドを使用して、先頭にスペースがsed
あることを除いて、すべての行の先頭に行を追加する必要があります。たとえば、先頭にスペースがalf
ありallpvt
、そこに行を追加したくありませんcomponent $c set_parameter
。誰かがsed
コマンド構文を理解するのに役立ちますか?
次のコマンドを使用してすべての行をsed
印刷しました。component $c set_parameter
sed -i -e 's/^/ component $c set_parameter /' a.cfg
コマンドの出力は次のとおりです。
component $c set_parameter BK 2
component $c set_parameter CM 2
component $c set_parameter LEF_M1_NAME ME1
component $c set_parameter LEF_M2_NAME ME2
component $c set_parameter LEF_M3_NAME ME3
component $c set_parameter LEF_M4_NAME ME4
component $c set_parameter LEF_M5_NAME ME5
component $c set_parameter NB 144
component $c set_parameter NW 256
component $c set_parameter viewselect = {
component $c set_parameter alf
component $c set_parameter allpvt
component $c set_parameter allpvthtml
component $c set_parameter atpg_netlist
component $c set_parameter clp
component $c set_parameter coord
component $c set_parameter core
component $c set_parameter cpf
component $c set_parameter ctl
component $c set_parameter dssum
component $c set_parameter fast_func_verilog
component $c set_parameter fastscan
component $c set_parameter frontend_gds
component $c set_parameter gds
component $c set_parameter ikos
component $c set_parameter lvlib
component $c set_parameter masis
component $c set_parameter mask
component $c set_parameter oasis
component $c set_parameter params
component $c set_parameter plef
component $c set_parameter power_verilog
component $c set_parameter
しかし、etcの先頭にスペースで始まる行が表示されることはalf
望ましくありallpvt
ません。
component $c set_parameter
最初にスペースがない部分にのみ行を印刷したいと思います。
答え1
空白文字で始まらない行を検索します(^
否定するには文字クラスで使用)。一致するものがある場合は、行の先頭を「コンポーネント」テキストに置き換えます。
/^
文字列の先頭から検索
[^ .. ]
これは文字クラスであり、^
クラスの内容を無効にします。
[:space:]+
文字クラスは空白またはタブです。
[^[:space:]]+
ただし、クラスは無効になるため、文字列の先頭で空白以外の文字を1つ以上検索します。 (つまり+
、空白以外の文字が複数回表示されます。)
正規表現で一致するものが見つかった場合は、/.../
次のように置き換えます。文字列の先頭(^は文字列の先頭を意味します)に「Component ...」テキストを追加します。
sed -E '/^[^[:space:]]+/ s/^/component $c set_parameter/' a.cfg