免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4420 | 回复: 16
打印 上一主题 下一主题

如何找到包含特殊字符的行,然后删除此行? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-05-29 17:04 |只看该作者 |倒序浏览
比如我要找到包含/*的注释行,然后删除,怎么做?
我用shell不多,不太会,请各位多帮忙,谢了

论坛徽章:
0
2 [报告]
发表于 2003-05-29 17:38 |只看该作者

如何找到包含特殊字符的行,然后删除此行?

grep -F -v "/*" filename > newfile

awk '{if($0 ! ~ /\/\*/) {print}}' filename > newfile

sed '/\/\*/d' filename > newfile

偶没试,ni ziji trytry.

论坛徽章:
0
3 [报告]
发表于 2003-05-29 18:58 |只看该作者

如何找到包含特殊字符的行,然后删除此行?

需要编个脚本,因为/* */注释可以跨行。

论坛徽章:
0
4 [报告]
发表于 2003-05-30 01:06 |只看该作者

如何找到包含特殊字符的行,然后删除此行?

原帖由 "unixplus" 发表:
比如我要找到包含/*的注释行,然后删除,怎么做?
我用shell不多,不太会,请各位多帮忙,谢了
   

  1. #!/bin/sh

  2. test $# -lt 2 && echo "Usage: $0 [-d] FILE" && exit 1

  3. if [ x"$1" = "x-d" ]; then
  4.     PARA=''
  5.     PRNT='d'
  6.     shift
  7. else
  8.     PARA='-n'
  9.     PRNT='p'
  10. fi

  11. sed $PARA "{
  12. /\/\/.*/p
  13. /\/\*/!b
  14. :a
  15. /\*\//!{
  16. N
  17. ba
  18. }
  19. $PRNT
  20. }" $1
复制代码


使用,假定该脚本命名为 a.sh

1. 只显示注释行:  

$ ./a.sh  file.c
/******************************************************************
* program
* hehe
******************************************************************/
    /* pw = getpwnam(argv[1]);
     enc = crypt( argv[2], pw->pw_passwd );
    */

2. 屏蔽所有注释行

$ ./a.sh -d file.c
#include <pwd.h>
#include <crypt.h>
#include <sys/types.h>
#include <string.h>
#include <stdio.h>

int main ( int argc, char *argv[] ) {
    char *enc;
    struct passwd *pw;
    ...
    }
    exit(0);
}

如果要输出到文件中只要在命令中用 > newfile 就可以了

论坛徽章:
0
5 [报告]
发表于 2003-05-30 01:16 |只看该作者

如何找到包含特殊字符的行,然后删除此行?

...

注意:

直接从帖子里拷贝的代码会造成行尾自动加上空格,这样在 sed 会出错,请自行删除这些空格或者在这儿直接下载

http://www.kingisme.com/hongxiu/a.sh

论坛徽章:
0
6 [报告]
发表于 2003-05-30 01:48 |只看该作者

如何找到包含特殊字符的行,然后删除此行?

那么如何用cat看html文件呢?!例如:
cat a.html
...
or="#000000" class="unnamed2"><font color="#FFFFFF">主编:丛老师</font></td>
     <td width="6%" bgcolor="#000000">&amp;</td>      <td width="28%" bgcolor="#000000" class="unnamed2"><font color="#FFFFFF">邮箱:<a href="mailto
...
就出现上述的太多无用的东西,而不像看文本一样那么自然...我记得有个软件可以转换,但是用脚本可以作到么?!!

论坛徽章:
0
7 [报告]
发表于 2003-05-30 01:58 |只看该作者

如何找到包含特殊字符的行,然后删除此行?

...



$ lynx -dump a.html

就可以了,如果非用脚本也是可以的,用 sed 把 HTML tag 也就是说 <...> 这样的字串去掉就好了,

$ sed 's/\<.*\>//g' a.html

当然版面效果不会有 lynx 那么好。

论坛徽章:
0
8 [报告]
发表于 2003-05-30 02:05 |只看该作者

如何找到包含特殊字符的行,然后删除此行?

谢谢红袖姐姐我这就试!

论坛徽章:
0
9 [报告]
发表于 2003-05-30 02:11 |只看该作者

如何找到包含特殊字符的行,然后删除此行?

出不来呀!结果:
$cat xmweb|sed 's/\<.*\>//g'
<!>$
注:我的系统是linux.没有装lynx,我想不会是这个原因.

论坛徽章:
0
10 [报告]
发表于 2003-05-30 02:21 |只看该作者

如何找到包含特殊字符的行,然后删除此行?

原帖由 "991214" 发表:
出不来呀!结果:
$cat xmweb|sed 's/\<.*\>//g'
<!>$
注:我的系统是linux.没有装lynx,我想不会是这个原因.
   

哦,sorry, 是疏忽啦,

$ sed 's/\<[^>]*\>//g;s/\&nbsp\;/ /g'  a.htm

这只是基本的提取,如果要做得好一点,还有很多东东要考虑的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP