吸油口22

时间:2016-01-12 14:46:11

标签: regex bash sed

我试图通过解析greppable文件输出来从nmap扫描中输出grep:

cat $file | grep "22/open" | awk '{print $2}' > $results/service_ssh

这样可行,但是失败的是在最后一个位置带有'22'的任何端口也被添加到文件中,这是错误的(例如8222 / open,8322 / open,1022 / open,...)

我应该使用grep之外的其他东西吗?我还不是正则表达式中最强的,所以任何帮助都会受到赞赏。

2 个答案:

答案 0 :(得分:2)

试试这个:

grep "^22/open" $file | awk '{print $2}' > $results/service_ssh

^匹配该行的开头。

或者,如果该行不以“22 / open”开头,您可以使用\b标记该单词的开头(由@Biffen建议)。

grep "\b22/open" $file | awk '{print $2}' > $results/service_ssh

答案 1 :(得分:2)

使用word boundarygrep '\b22/open' "$file" | awk '{print $2}' > "$results/service_ssh" ):

files: [
    ...
    'bower_components/angular-i18n/angular-locale_en-us.js',
    'bower_components/angular-i18n/angular-locale_fr-ca.js',
    ...
],

no need to use cat。引用变量是一个好习惯。