grep忽略第一个字符

时间:2014-05-30 18:15:46

标签: shell unix grep

如果我有一堆行:

//mainHtml = "https://
mainHtml = "https:
//https:www.google.com
public String ydmlHtml = "https://remando
aasdfa dsfadsf a asdfasd fasd fsdafsdaf

现在我只想grep那些包含“https:”的行,但它们不应该以“//”开头

到目前为止,我有:

cat $javaFile | grep -e '\^\/ *https:*\'

其中$ javaFile是我想要查找的文件。 我的输出是一个空白。 请帮助:)

2 个答案:

答案 0 :(得分:2)

您可以使用字符类来否定行的开头。我们使用-E选项来使用ERE或扩展正则表达式。

grep -E '^[^/]{2}.*https' file

使用您的样本数据:

$ cat file
//mainHtml = "https://
mainHtml = "https:
//https:www.google.com
public String ydmlHtml = "https://remando
aasdfa dsfadsf a asdfasd fasd fsdafsdaf

$ grep -E '^[^/]{2}.*https' file
mainHtml = "https:
public String ydmlHtml = "https://remando

您也可以选择在没有-E选项的情况下编写它:

grep '^[^/][^/].*https' file

答案 1 :(得分:1)

分两步:

grep -v '^//' | grep 'https:'
  • grep -v '^//'删除以//
  • 开头的行
  • grep 'https:'获取包含http:
  • 的行