현재 나는 이 sed를 가지고 있습니다:
sed -i '/[^}.to]\.to[[:space:]]/ s/\(\S\)/expect(\1/' ../_spec_seded/"$file"
" "(" " 제외) expect(
이 있는 줄의 시작 부분에 " "을 추가합니다..to
{.to
.to
" " 및 " .to_not
" 와 일치하는 줄을 만들려면 어떻게 해야 합니까 ?
나는 노력했다
sed -i '/[^}.to]\.to([[:space:]]|_not)/ s/\(\S\)/expect(\1/' my_file
기본적으로 OR 일치를 [[:space:]]
시도 하지만 처음에 기대치를 추가하는 대신 둘 다 엉망으로 만듭니다.([[:space:]]|_not)
.to
.to_not
답변1
이것이 당신이 원하는 것입니까?
sed '/{\.to/b;/\.to\(_not\|\)\s/s/^\s*/\0expect(/' file
대안:
sed '/{\.to/b;/\.to\(_not\|\)[[:space:]]/s/^[[:space:]]*/\0expect(/' file
견본:
$ diff -ytW 48 infile <(./sed_script)
.to do | expect(.to do
.to SPACE and | expect(.to SPACE and
.to TAB | expect(.to TAB
some s some s
day x day x
.to r | expect(.to r
.tofry .tofry
not t not t
.to tab | expect(.to tab
{.to not me {.to not me
{.to nor me {.to nor me
when e when e
{.to Nope {.to Nope
.to_not BUT yes! | expect(.to_not BUT yes
{.to Oh nono {.to Oh nono
.to_notX .to_notX
.do s .do s
{.to not do me {.to not do me
so d so d
|--- Original file ----|--- modified file ----|