替换shell命令中的单词

时间:2014-01-20 03:51:59

标签: regex bash awk

我对此有点新意,请耐心等待。我想替换附加到变量的某些文本?还是字符串?我不记得它叫什么狄更斯了。

  

从/ this / here / string /

删除我/
var="delete me /from/this\ here\ string/"

我试过了:

echo $var | sed 's/^\(.* \)\(delete\sthis \)$/\wtf?\1/g'
echo $var | sed 's/.*\//delete this;/g'
awk ${var/123/abc};

我想对“删除我”打印的内容进行讨论。第二部分总是改变,但“删除我”总是存在。我太老了,谢谢你

3 个答案:

答案 0 :(得分:2)

试试这个

> var="delete me /from/this\ here\ string/"
> echo "${var/delete me/}"
 /from/this\ here\ string/

答案 1 :(得分:1)

这个怎么样?

echo $var|sed 's/\(^[^/]*\)/abc/'

答案 2 :(得分:0)

var="delete me /from/this\ here\ string/"

var="$(printf '%s' "$var" | sed -e 's/^[[:blank:]]*delete[[:blank:]][[:blank:]]*[^[:blank:]]*[[:blank:]]*//' -e 's/\\//g')"

echo "$var"

我的输出:

/from/this here string/

它只是替换单词“delete”和后面的单词,删除当前短语之前和之后的所有空格。这允许它处理“删除我”,“删除这个”,甚至“\ t \ t \ ttt \ tt \ t \ t \ t \ t \ tt_too \ t \ t \ t”,因为“空白”是空格或制表符(\吨)。它只适用于以“删除”开头的两个单词。

我希望这会有所帮助。