考虑以下代码:
pattern="*.some_pattern.*"
orignalLogFile='sample.log'
outputFile='1.txt'
temp='1.log'
# match the pattern and replace with a new line
sed 's/'$pattern'/\n/' $orignalLogFile > $temp
抛出一个
'sed:-e表达式#1,字符9:未终止的's'命令'
如何解决此问题?
答案 0 :(得分:1)
Sed不接受换行符。 AFAIK也不接受明星;但我认为你不需要使用它们。
pattern="some_pattern"
orignalLogFile='sample.log'
outputFile='1.txt'
read -r < "${originalLogFile}"
echo "${REPLY}" | sed s"@${pattern}@newline@" > newlog.tmp
read newlog < newlog.tmp
echo "${newlog}" | tr 'newline' '\n' > "${outputFile}"
rm newlog.tmp
答案 1 :(得分:1)
您可能需要两次更正
你的模式中的*.
没有意义,所以
pattern=".*some_pattern.*"
此外,您需要以双引号传递模式以保护它免受shell扩展
sed 's/'"$pattern"'/\n/' file