【发布时间】:2020-12-07 18:50:57
【问题描述】:
如果我有一个包含多行的文本文件:
source = "/directory/something/module1"
sometext sometext
source = "/directory/something/module2"
sometext sometext
source = "/directory/something/module3"
所以对于每行有source = "/some directory/some module"
我想替换最后一个正斜杠之前的数据。所以我会以这样的方式结束:
source = "./module/module1"
sometext sometext
source = "./module/module2"
sometext sometext
source = "./module/module3"
需要保留模块名称,并替换它们的包含目录。
【问题讨论】:
-
请以代码的形式添加您的努力,这在 SO 上受到强烈鼓励。
-
sed -e '/source/s@".*/@"./module/@' file -
谢谢@kvantour,虽然我不明白为什么??
-
philthy - @karakfas 建议适用于发布的示例输入,但不适用于其他输入。例如,尝试用
my "problem" source is that N/0 is invalid替换任何行上的sometext。为给定的示例输入生成预期输出的脚本是确定解决方案的起点,而不是终点,匹配您想要的文本总是微不足道的,但不匹配您不想要的文本要困难得多。 -
在决定它是否有效之前了解潜在的解决方案很重要,并且努力创建示例输入/输出来测试不仅仅是您的晴天案例,尤其是涵盖您的案例可以想象可能会导致您不想匹配但看起来与您匹配的匹配。