LinuxSir.cn,穿越时空的Linuxsir!

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

[求助]关于从文本中选择的问题。

[复制链接]
发表于 2006-9-8 16:58:49 | 显示全部楼层 |阅读模式
  1. preinstall scriptlet (using /bin/sh):
  2. # Remove these old glibc files on upgrade (bug #84090).
  3. for file in $(find /usr/share/locale -type f -name LC_TIME); do
  4.         [ -x /bin/rm ] && /bin/rm -f "$file"
  5. done

  6. # We must desinstall theses info files since they're merged in
  7. # coreutils.info. else their postun'll be runned too last
  8. # and install-info'll faill badly because of doubles
  9. for file in sh-utils.info textutils.info fileutils.info; do
  10.         if [ -f /usr/share/info/$file.bz2 ]; then
  11.                 /sbin/install-info /usr/share/info/$file.bz2 --dir=/usr/share/info/dir --remove &> /dev/null
  12.         fi
  13. done
  14. postinstall scriptlet (using /bin/sh):
  15. /bin/grep -v '(sh-utils)\|(fileutils)\|(textutils)' /usr/share/info/dir > \
  16.   /usr/share/info/dir.rpmmodify || exit 0
  17.     /bin/mv -f /usr/share/info/dir.rpmmodify /usr/share/info/dir
  18. [ -f /usr/share/info/coreutils.info.gz ] && \
  19.   /sbin/install-info /usr/share/info/coreutils.info.gz /usr/share/info/dir || :
  20. preuninstall scriptlet (using /bin/sh):
  21. if [ $1 = 0 ]; then
  22.     [ -f /usr/share/info/coreutils.info.gz ] && \
  23.       /sbin/install-info --delete /usr/share/info/coreutils.info.gz \
  24.         /usr/share/info/dir || :
  25. fi
复制代码


想把其中postinstall到preuninstall中的脚本拿出来,就是把
  1. /bin/grep -v '(sh-utils)\|(fileutils)\|(textutils)' /usr/share/info/dir > \
  2.   /usr/share/info/dir.rpmmodify || exit 0
  3.     /bin/mv -f /usr/share/info/dir.rpmmodify /usr/share/info/dir
  4. [ -f /usr/share/info/coreutils.info.gz ] && \
  5.   /sbin/install-info /usr/share/info/coreutils.info.gz /usr/share/info/dir || :
复制代码

拿出来,用脚本怎么写?
发表于 2006-9-8 17:36:44 | 显示全部楼层
我写了一段傻乎乎的东东,你看行不,我在想想,我也刚学不久
sed -e '1,/^postinstall/d' -e '/^preuninstall/,/^fi/d' test >tmp
回复 支持 反对

使用道具 举报

发表于 2006-9-8 17:38:49 | 显示全部楼层
sed -e '1,/^postinstall/d' -e '/^preuninstall/,/^$/d' test >tmp
这个好像好点,不过要保证脚本里没有别的空行
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-8 17:43:36 | 显示全部楼层
如果有空行呢?

另,如果下面的可能是preuninstall/postuninstall两个中的一个,又怎么办呢?
回复 支持 反对

使用道具 举报

发表于 2006-9-8 17:50:44 | 显示全部楼层
用这个sed -e '/^$/d' -e '1,/^postinstall/d' -e '/^preuninstall/,/^$/d' test >tmp,万无一失
回复 支持 反对

使用道具 举报

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

本版积分规则

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