sed - 공백이나 underscores_word를 바꾸는 방법

sed - 공백이나 underscores_word를 바꾸는 방법

현재 나는 이 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 ----|

관련 정보