LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 858|回复: 3

用sed和awk填写路径

[复制链接]
发表于 2009-12-19 01:55:47 | 显示全部楼层 |阅读模式
我承认我有病,在钻牛角尖。我知道我在做蠢事,所以不要问我做什么,我现在睡不着,就是这样……


1.
  1. secludedsage@secludedsage-laptop:/home/secludedsage$ echo "sds" > 1.txt
  2. secludedsage@secludedsage-laptop:/home/secludedsage$ cat 1.txt
  3. sds
  4. secludedsage@secludedsage-laptop:/home/secludedsage$ sed "s/d/\/home\/secludedsage/g" < 1.txt
  5. s/home/secludedsages
  6. secludedsage@secludedsage-laptop:/home/secludedsage$ sed "s/d/${PWD}/g" 1.txt
  7. sed: -e expression #1, char 6: unknown option to `s'
  8. secludedsage@secludedsage-laptop:/home/secludedsage$ echo $PWD
  9. /home/secludedsage
  10. secludedsage@secludedsage-laptop:/home/secludedsage$ sed "s/d/${PWD//\//\\\/}/g" 1.txt
  11. sed: -e expression #1, char 8: unknown option to `s'
  12. secludedsage@secludedsage-laptop:/home/secludedsage$ echo ${PWD//\//\\\/}
  13. \/home\/secludedsage
复制代码


完全一样就是换不了……

另外就是awk的一个小问题:
  1. secludedsage@secludedsage-laptop:/home/secludedsage$ mkdir s\\\\d
  2. secludedsage@secludedsage-laptop:/home/secludedsage$ cd s\\\\d
  3. secludedsage@secludedsage-laptop:/home/secludedsage/s\\d$ echo "1" > 1.txt
  4. secludedsage@secludedsage-laptop:/home/secludedsage/s\\d$ awk -v PWD=$PWD '{print PWD}' 1.txt
  5. /home/secludedsage/s\d
  6. secludedsage@secludedsage-laptop:/home/secludedsage/s\\d$ echo $PWD
  7. /home/secludedsage/s\\d
复制代码

  显然两个不一样。一个是s\d一个是s\\d。
  后面的我能想到的办法就是 PWD=${PWD//\\/\\\\}。但是太长了,不知道有没有好点的办法。前面的sed还真不知道为什么。



依然谢谢大家的回答。
发表于 2009-12-19 02:19:30 | 显示全部楼层
echo sds | sed -e "s#d#$PWD#"
上面行不行?

另外,你似乎问错地方了,linuxsir有专门讨论脚本的地方,貌似
比这里更加合适啊.
回复 支持 反对

使用道具 举报

发表于 2009-12-19 10:11:43 | 显示全部楼层
sed "s@d@${PWD}@g" 1.txt
这样就可以了.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-20 15:39:19 | 显示全部楼层
Post by Blahster;2057036
echo sds | sed -e "s#d#$PWD#"
上面行不行?

另外,你似乎问错地方了,linuxsir有专门讨论脚本的地方,貌似
比这里更加合适啊.


我当shell只是写shell,没有想到sed / awk编辑器也算……

问题有点欠抽。我之所以不换是因为PWD里也可能有#或者@……
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表