次のデータを含むファイルがありますLoginExcInternal.txt
。
Name1 OpenFin/111.111.111.111
Name2 OpenFin/111.111.111.112
Name3 Chrome/111.111.111.111
2つの列はで区切ります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
)