我有一个文本文件,内容如下:
hello my name
is teddy bear,
I like
eating sweet honey!
我想用shell脚本替换is teddy bear
到is sleepy bear
行。
我正在尝试以下代码:
#!/bin/sh
ORI_LINE="is[[:space:]]teddy[[:space:]]bear"
NEW_LINE="is[[:space:]]sleepy[[:space:]]bear"
eval sed -i -e 's/$ORI_LINE/$NEW_LINE/g' ./hello.txt
但是最后我得到
hello my name
is[[:space:]]sleepy[[:space:]]bear,
I like
eating sweet honey!
,其中[[:space:]]
未被解析为实空间。
我想继续使用变量ORI_LINE
和NEW_LINE
,而不是使用sed命令的内联字符串。
谢谢!
你让它把那个图案放进去。替换字符串应该具有实际的空格,而不是可以匹配各种类型的"空格"的正则表达式模式。字符。
,如果
$: txt="hello my name is teddy bear,
I like eating sweet honey!"
$: ORI_LINE="is[[:space:]]teddy[[:space:]]bear"
$: NEW_LINE="is sleepy bear"
然后
$: sed "s/$ORI_LINE/$NEW_LINE/g" <<< "$txt"
hello my name is sleepy bear,
I like eating sweet honey!