awk / sed 脚本删除文本

发布于 2024-09-03 03:03:09 字数 570 浏览 3 评论 0原文

我目前需要一种方法来以编程方式从我正在处理的 Makefile 中删除一些文本。现在的问题是(无论出于何种原因)makefile 是使用 -l/ 链接命令生成的,而它们应该使用 -l生成。。所以我需要一个脚本来查找所有出现的 -l/ ,然后删除直到并包括下一个 /

我正在处理的例子

-l/home/user/path/to/boost/lib/boost_filesystem

我需要它

-lboost_文件系统

可以想象,这是一个权宜之计,直到我解决真正的问题(在生成方面),但与此同时,如果这可行的话,这对我来说将是一个很大的帮助,而且我不太擅长我的 awk 和sed。

感谢您的任何帮助。

I am currently in need of a way to programmatically remove some text from Makefiles that I am dealing with. Now the problem is that (for whatever reason) the makefiles are being generated with link commands of -l<full_path_to_library>/<library_name> when they should be generated with -l<library_name>. So what I need is a script to find all occurrences of -l/ and then remove up to and including the next /.

Example of what I'm dealing with

-l/home/user/path/to/boost/lib/boost_filesystem

I need it to be

-lboost_filesystem

As could be imagined this is a stop gap measure until I fix the real problem (on the generation side) but in the meantime it would be a great help to me if this could work and I am not too good with my awk and sed.

Thanks for any help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

燃情 2024-09-10 03:03:09
sed -i 's|-l[^ ]*/\([^/ ]*\)|-l\1|g' Makefile
sed -i 's|-l[^ ]*/\([^/ ]*\)|-l\1|g' Makefile
软糖 2024-09-10 03:03:09

干得好

echo "-l/home/user/path/to/boost/lib/boost_filesystem" | awk -F"/" '{ print $1  $NF  } '

Here you go

echo "-l/home/user/path/to/boost/lib/boost_filesystem" | awk -F"/" '{ print $1  $NF  } '
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文