다음과 같은 데이터가 포함된 파일이 있습니다 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
)