我知道我可以匹配句点,\.
但通过反复试验,我似乎仍然无法让我的模式忽略句点字符。
我尝试过各种变体,例如:
\[^.]
\[^.]+
我想要这样的代码
foo("some text").arg("more text");
保持不变,而代码如
foo("some text");
匹配一个模式并用其他东西替换
另外,我遇到了另一个问题
一个案例比如:
tr("I am some text") .arg(i do stuff) .arg(I also do stuff)
需要处理 2 到 n 行。
我希望保留此类文本,因为截至目前, tr 将被删除并会导致语法错误。
答案1
要成为“非句点”,那么序列[^.]
就是您想要的。在您的示例中,您\
前面有一个[
,这是错误的。
因此,例如:
foo("some text").arg("more text");
foo("some text");
% sed 's/foo("some text")[^.]/replaced text/' tstfile
foo("some text").arg("more text");
replaced text
请注意,这也替换了 后面的字符foo(..)
。如果你想保留它,那么我们可以记住它:
% sed 's/foo("some text")\([^.]\)/replaced text\1/' tstfile
foo("some text").arg("more text");
replaced text;