
.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:]]+
그러나 클래스는 무효화되므로 문자열 시작 부분에서 공백이 아닌 문자를 하나 이상 검색합니다. (즉 +
, 공백이 아닌 문자가 한 번 이상 나타납니다.)
정규식에서 일치하는 항목이 발견되면 /.../
다음과 같이 바꾸십시오. 문자열 시작 부분(^은 문자열 시작 부분을 의미)에 "Component..." 텍스트를 추가합니다.
sed -E '/^[^[:space:]]+/ s/^/component $c set_parameter/' a.cfg