Sed 대체 변수의 에코 결과

Sed 대체 변수의 에코 결과

다음과 같은 데이터가 포함된 파일이 있습니다 LoginExcInternal.txt.

Name1   OpenFin/111.111.111.111
Name2   OpenFin/111.111.111.112
Name3   Chrome/111.111.111.111

두 열은 로 구분됩니다 tabs.

이것을 대체할 다른 파일로 출력해야 합니다 OpenFin.Chrome=VLOOKUP('Mar 19'!A4,'User-Firm'!A2:B1999,2,FALSE)

이전 월요일의 월과 연도가 항상 표시되어야 합니다 Mar 19.

이것이 내가 지금까지 가지고 있는 것입니다:

z="$(date -d 'last Sunday - 6 day' '+%b %y')" && sed 's/OpenFin.*/=VLOOKUP('$z'!A4,'User-Firm'!A2:B1999,2,FALSE)/g;s/Chrome.*/=VLOOKUP('$z'!A4,'User-Firm'!A2:B1999,2,FALSE)/g' LoginExcInternal.txt > Test2.txt

sed: -e expression #1, char 24: unterminated이로 인해 s' 명령 오류가 발생했습니다 .

원하는 출력:

Name1   =VLOOKUP('Mar 19'!A4,'User-Firm'!A2:B1999,2,FALSE)
Name2   =VLOOKUP('Mar 19'!A4,'User-Firm'!A2:B1999,2,FALSE)
Name3   =VLOOKUP('Mar 19'!A4,'User-Firm'!A2:B1999,2,FALSE)

Mar 19아포스트로피가 있어야 다음과 같아야 합니다.'Mar 19'

답변1

sed 없이:

str="=VLOOKUP('$(date -d 'last Sunday - 6 day' '+%b %y')'";
str+="$(printf "\\$(printf '%03o' '33')")";
str+="A4,'User-Firm'";
str+="$(printf "\\$(printf '%03o' '33')")";
str+="A2:B1999,2,FALSE)"; 
while read name ignored;do 
    ((${#name}))&&echo "${name}    ${str}";
done<urfile.txt

sed로:

sed "s/OpenFin.*$\|Chrome.*$/${str}/g" urfile.txt

이것은 잘 작동할 것입니다

답변2

주문하다:sed -E "s/Chrome|OpenFin/=VLOOKUP\('Mar 19'\!A4,'User-Firm'\!A2:B1999,2,FALSE\)/g" filename|sed "s/\/[0-9]\{3\}.*//g"

산출

sed -E "s/Chrome|OpenFin/=VLOOKUP\('Mar 19'\!A4,'User-Firm'\!A2:B1999,2,FALSE\)/g" 
 filename|sed "s/\/[0-9]\{3\}.*//g"

Name1   =VLOOKUP('Mar 19'!A4,'User-Firm'!A2:B1999,2,FALSE)
Name2   =VLOOKUP('Mar 19'!A4,'User-Firm'!A2:B1999,2,FALSE)
Name3   =VLOOKUP('Mar 19'!A4,'User-Firm'!A2:B1999,2,FALSE

)

관련 정보