设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
Linux 综合讨论区 —— LinuxSir.cn
›
shell进阶应用、shell编程
›
一个sed的问题
返回列表
查看:
695
|
回复:
8
一个sed的问题
[复制链接]
hiroshi
hiroshi
当前离线
积分
24
IP卡
狗仔卡
发表于 2004-3-2 12:10:37
|
显示全部楼层
|
阅读模式
在一个makefile中看到有这样一段:
MAKEDEPEND = set -e; $(CC) -M -c $(CFLAGS) $< | \
sed '1s*^*$*.d $(*D)/*' > $@; \
[ -s $@ ] || rm -f $@
注释中解释这段话是用来为每一个.c产生一个.d的依赖文件,可是我怎么也看不懂其中sed '1s*^*$*.d $(*D)/*' 这句,哪位sed高手能解释一下这句话的含义,谢谢。
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
KornLee
KornLee
当前离线
积分
6960
IP卡
狗仔卡
发表于 2004-3-2 14:27:35
|
显示全部楼层
这句改变了sed默认的分隔符,对第一行进行替换,..???
我看还是让sed高手来解释解释吧~~
回复
支持
反对
使用道具
举报
显身卡
hiroshi
hiroshi
当前离线
积分
24
IP卡
狗仔卡
楼主
|
发表于 2004-3-2 14:46:27
|
显示全部楼层
是不是将分隔符改成了*,那怎么会有4个*,不是应该只有3个吗,s/pat1/pat2/
还有其中的$什么意思,行尾匹配?
回复
支持
反对
使用道具
举报
显身卡
KornLee
KornLee
当前离线
积分
6960
IP卡
狗仔卡
发表于 2004-3-2 14:53:11
|
显示全部楼层
^是开头,$是结尾,你可以\找出一个要替换的.c文件测试一下
回复
支持
反对
使用道具
举报
显身卡
hiroshi
hiroshi
当前离线
积分
24
IP卡
狗仔卡
楼主
|
发表于 2004-3-2 15:26:30
|
显示全部楼层
还是不明白,如果把分隔符换成%,应该是什么样子
是不是:sed '1s%^*$%.d $(*D)/%'
回复
支持
反对
使用道具
举报
显身卡
dearvoid
dearvoid
当前离线
积分
282
IP卡
狗仔卡
发表于 2004-3-2 19:05:58
|
显示全部楼层
sed 每次处理一行, 不能像 awk 那样可以修改分隔符
回复
支持
反对
使用道具
举报
显身卡
dearvoid
dearvoid
当前离线
积分
282
IP卡
狗仔卡
发表于 2004-3-2 19:14:09
|
显示全部楼层
$* 和 $(*D) 在 Makefile 中有特殊含义, 与 sed 无关, 另外两个 * 才是 sed 替换命令(s) 的分隔符, 估计原作者故意用 * 作分隔符(可以用任意其它字符, 不过一般用 /), 好让大家看不明白
回复
支持
反对
使用道具
举报
显身卡
dearvoid
dearvoid
当前离线
积分
282
IP卡
狗仔卡
发表于 2004-3-2 19:16:09
|
显示全部楼层
我的 Makefile 中是这么用的:
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有帐号?
注册
x
回复
支持
反对
使用道具
举报
显身卡
dearvoid
dearvoid
当前离线
积分
282
IP卡
狗仔卡
发表于 2004-3-2 19:19:08
|
显示全部楼层
$* 和 $(*D) 的含义请参考 makefile 手册
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
Gentoo Linux
LinuxSir 论坛管理
Ubuntu Linux 专题讨论
Debian Linux
服务器架设、应用、维护
LFS(LinuxfromScratch)
BSD 讨论专题
Mandriva Linux
Linux 输入开发与研究
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表